2014-03-26 65 views
0

這是我的第一篇文章,所以我很抱歉,如果我犯了什麼錯誤,我正在努力工作。我一直在尋找幾天,我找不到解決方案,我甚至不知道是否有可能。我想要做的是基本的,我需要保存一個URL作爲一個JavaScript變量,以便稍後在網站中調用。該URL是http://en.m.wikipedia.org/wiki/Special:Random,它加載了一個隨機頁面。我希望變量是隨機頁面的URL,但它總是「http:// en.m.wikipedia.org/wiki/Special:Random」。我想我可能需要首先將其加載到其他地方,例如在iframe中,然後從那裏調用URL,但它只是保持爲「http:// en.m.wikipedia.org/wiki/Special:Random」。任何幫助將不勝感激。保存一個更改爲javascript變量的url?

+0

我該如何做一些AJAX魔術? – FDbomb

+1

呃,忘記AJAX。這將被XSS政策所否定。你必須用捲曲來做。 – techouse

回答

0

您鏈接的頁面在您訪問時會重定向您。這意味着你必須在獲得你想要的實際隨機頁面之前請求它。你可以嘗試做

一種方法是加載隨機頁面中的iframe,並檢查了iframe的位置:

var iframe = document.createElement('iframe'); 
iframe.src = 'http://en.m.wikipedia.org/wiki/Special:Random'; 
iframe.name = "random"; 
document.body.appendChild(iframe); 
console.log(window.frames['random'].location.href); 

如果你嘗試,你會得到一個討厭的冠冕堂皇的錯誤,這樣的:

Uncaught SecurityError: Blocked a frame with origin " http://run.jsbin.io " from accessing a frame with origin " http://en.m.wikipedia.org ". Protocols, domains, and ports must match.

它的原因是因爲它說,位置是敏感信息,你就只能當IFRAME具有相同的協議,域和端口的頁面訪問它的同源策略的其中正試圖訪問它。

現在唯一的解決方案是在服務器上有一個頁面,向隨機頁面發出請求,獲取響應並獲取響應的URL。您可以通過AJAX檢索url,也可以簡單地將其集成到頁面服務器端:

<html> 
<body> This is my page and this is the random url: 
<?php 
    ... curl request to http://en.m.wikipedia.org/wiki/Special:Random from which you get the url 
    echo $url; 
?> 
</html> 
+0

因爲我有困難,你能否給我捲曲碼? – FDbomb