2013-12-14 4 views
1

Доброе утро, я адресности HTML другой страницы с помощью AJAX:querySelectorAll() в HTML с другой страницы

var xml = new XMLHttpRequest() 
xml.onreadystatechange = function() { 
    if (xml.readyState == 4) { 
     // here I need to work with data 
     // xml.responseText 
    } 
} 
xml.open("GET", url, false); 
xml.send(null) 

Как я могу применить querySelectorAll() в HTML-содержимое другой страницы?

ответ

8

Вы можете создать новый документ и поставить responseText в него. Затем вы можете использовать querySelectorAll(). Вот ваш onreadystatechange функция:

function() { 
    if (xml.readyState == 4) { 
     var container = document.implementation.createHTMLDocument().documentElement; 
     container.innerHTML = xml.responseText; 
     var nodeList = container.querySelectorAll('selector'); 
    } 
} 
2

Если ваш ответ действительно XML, вы можете попробовать xml.responseXml.

Если это не так, то вы могли бы рассмотреть вопрос об использовании DocumentFragment:

var doc = document.createDocumentFragment(); 
var div = document.createElement("div"); 
div.innerHTML = xml.responseText; 
doc.appendChild(div); 

var nodes = doc.querySelectorAll("..."); 
+1

Не могли бы вы объяснить практическое различие между 'createDocumentFragment()' и 'createHTMLDocument()'? – Pavlo

+1

@Pavlo Хороший вопрос! В соответствии с [примером MDN] (https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument#Example) вам также необходимо скопировать («импортировать») созданный документ в текущий документ веб-сайта, если вы хотите в конечном итоге отобразить HTML. – ComFreek