获取PhantomJS中IFrame的文档对象

Get the document object of an IFrame in PhantomJS?

本文关键字:文档 对象 IFrame PhantomJS 获取      更新时间:2023-09-26

我试图在设置iframe.src后获得Iframe的文档。我称它为phantom-node。当iframe为空时,函数返回error:

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中打开页面。

你应该能够得到这个

document.getElementById('myframe').contentWindow.document