Я пытаюсь извлечь несколько строк из таблицы с этой страницы http://www.money.pl/pieniadze/ используя выражение xpath и javascript. Я могу получить всю страницу, отображаемую как всплывающее окно, но я не могу вычислять выражение xpath с помощью document.evaluate(); Пробовал играть с XPathResultType, но результатов не найдено. Может ли кто-нибудь помочь?Оценка выражения xpath в Chrome
Вот мой фон страница:
<html><head><script>
...
var wholePage;
setInterval(fetch, 20000);
function fetch()
{
req = new XMLHttpRequest();
var url = "http://www.money.pl/pieniadze/";
req.open("GET", url);
req.onload = process;
req.send();
}
function process()
{
wholePage = req.responseText;
}
</script></head></html>
и вот всплывающая страница:
<html><head><script>
...
onload = setTimeout(extract, 0);
function extract()
{
chrome.browserAction.setBadgeText({text: ''});
var bg = chrome.extension.getBackgroundPage();
var EurPlnPath = "//tr[@id='tabr_eurpln']";
var tempDiv = document.getElementById('current');
tempDiv.innerHTML = bg.wholePage;
var oneTopic = document.evaluate(EurPlnPath, bg.wholePage, null, XPathResult.ANY_TYPE, null)
var res = oneTopic.iterateNext();
}
</script></head>
<body>
<div id="current">
</div>
</body>
</html>
Не используйте 'querySelectorAll', но' querySelector'. Идентификаторы должны быть уникальными, поэтому вы можете быть уверены, что выбор возвращает только один элемент. 'querySelector' намного [быстрее] (http://jsperf.com/getelementbyid-vs-queryselector/5), чем XPath, поэтому этот ответ содержит хороший совет. Тем не менее, этот метод не может работать с обычными строками, см. Мой ответ для этой части. –
Роб прав, если эти несколько строк имеют свойство, которое может определенно выбрать их, вам лучше использовать querySelectorAll с такими свойствами. то вы сразу получите список таких элементов. –