Я пытаюсь получить документ iframe после установки iframe.src
. Я звоню в phantom-node
. Функция возвращает error
когда IFrame пуст:Получить объект документа IFrame в PhantomJS?
fetchGuestbookEntries: function() {
var getGuestbookForPage = function (doc) {
var result = [];
var rows = doc.querySelectorAll('td[class="guestbook"]');
var date = "";
var entry = "";
for (var i = 0; i < rows.length; i++) {
date = i % 2 == 0 ? rows[i].innerText : date;
entry = i % 2 != 0 ? rows[i].innerText : entry;
if (date && entry) {
var info = date.split('\n').map(function (elem) {
return elem.replace('\n', '').trim();
});
result.push(
{
info: {
guestname: info[0],
date: new Date(info[3]).toISOString().slice(0, 10),
time: info[4].replace(/Uhr|h/gi, '').trim()
},
entry: entry.trim()
}
);
date = "";
entry = "";
}
}
return result;
};
var getPaginationSize = function() {
return document.querySelector('td[class="guestbook_navijump"]') ?
document.querySelector('td[class="guestbook_navijump"]').querySelectorAll('a').length : 0;
};
var getIframeDoc = function(ifrm) {
return ifrm.document ||
ifrm.contentDocument ||
ifrm.contentWindow.document;
};
var pagination = getPaginationSize();
var entries = [];
for (var i = 0; i <= pagination; i++) {
var paginationPageUrl = window.location.href + "?jump=" + i;
var iframe = document.createElement('iframe');
iframe.src = paginationPageUrl;
var doc = getIframeDoc(iframe);
entries.push(getGuestbookForPage(doc));
}
return entries;
}
Есть ли способ, чтобы получить этот документ?
Ошибка:
Uncaught TypeError: Cannot read property 'document' of null
at <anonymous>:2:21
at Object.InjectedScript._evaluateOn (<anonymous>:895:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:828:34)
at Object.InjectedScript.evaluate (<anonymous>:694:21)
Я обычно открыть страницу в PhantomJS.
Просьба предоставить полную и минимальный пример кода. –
Хорошо, я добавил часть кода, где я хочу использовать iframe. –
Поскольку вы используете мост, попробовали ли вы запустить PhantomJS с параметром командной строки '--web-security = false'? [Пример 1] (http://stackoverflow.com/a/29773659), [Пример 2] (http://stackoverflow.com/a/25260315) –