2012-04-08 28 views
0

目前,我試圖下車使用AJAX的外部網站的元素,到目前爲止,我(希望)設法讓頁面:如何使用AJAX從外部網頁獲取未命名的元素?

var xmlhttp; 
var version; 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    version=xmlhttp.innerHTML; 
    } 
    } 
xmlhttp.open("GET","http://www.minecraftwiki.net/wiki/Minecraft_Wiki",true); 
xmlhttp.send(); 

現在我只需要找到一種方法,獲取內容:

<dd> Current PC version: 
<b> 
<a href="/wiki/Version_history#1.2.5" title="Version history"> 
1.2.5 
</a> 
</b> 
</dd> 

我檢查URL的源代碼,遺憾的是我想要的元素是未命名的(沒有ID =」「),所以它仍然是有可能這樣做?如果是這樣,怎麼樣?謝謝

+1

如果我們不知道你想要選擇什麼元素,誰能說如何選擇元素? – 2012-04-08 23:56:53

+2

另外,你有沒有驗證過,你甚至可以獲得遠程頁面的body元素?大多數現代瀏覽器不支持跨域AJAX,這意味着您將獲得安全性例外。 – jmort253 2012-04-08 23:57:37

+0

@GGG這是目前在這個wiki中的PC版本,如果這就是你的意思。 http://www.minecraftwiki.net/wiki/Minecraft_Wiki但它沒有被標記,但是 – Luke 2012-04-09 00:02:39

回答

0

首先,您正在提出跨域請求,因此除非您使用允許跨域AJAX的瀏覽器,否則如果不使用服務器端代理,這很可能不適用於您。

但是,要回答您的原始問題,您不需要id屬性即可訪問元素。雖然有幫助,但您可以通過多種方式訪問​​元素。

類選擇

var col = document.getElementsByClassName("the-class"); 

然後通過收集循環,直到你找到你想要的元素。

jquery選擇:

jQuery Selectors也許處理DOM操作並訪問元素,你有興趣的最簡單的方法:

// example of an attribute selector: 

var exampleHTML = $('div[title="example"]).html(); 

還有的XPath,但是從我的經驗jQuery CSS選擇器更加現代,強大,並且有助於加速開發過程。