Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在PhantomJS中获取IFrame的文档对象?_Javascript_Html_Node.js_Dom_Phantomjs - Fatal编程技术网

Javascript 在PhantomJS中获取IFrame的文档对象?

Javascript 在PhantomJS中获取IFrame的文档对象?,javascript,html,node.js,dom,phantomjs,Javascript,Html,Node.js,Dom,Phantomjs,在设置Iframe.src之后,我试图获取Iframe的文档。 我在幻影节点中调用它。 当iframe为空时,函数返回一个错误: fetchGuestbookEntries: function () { var getGuestbookForPage = function (doc) { var result = []; var rows = doc.querySelectorAll('td[class="guestbook"]'); v

在设置
Iframe.src
之后,我试图获取Iframe的文档。 我在幻影节点中调用它。 当iframe为空时,函数返回一个
错误

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;
}
fetchGuestbookEntries:函数(){
var getGuestBookFormage=函数(doc){
var结果=[];
var rows=doc.querySelectorAll('td[class=“guestbook”]”);
var日期=”;
var条目=”;
对于(变量i=0;i对于(var i=0;i你应该可以用这个

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

请提供一个完整且最少的代码示例。好的,我添加了我想要使用iFrameJS的代码部分。因为您正在使用网桥,您是否尝试过使用
--web security=false
命令行选项运行PhantomJS?是的,我是这样做的,我使用以下选项启动PhantomJS“-web security=no”、“--ignore ssl errors=yes”,我想这就是我在getIframeDoc(iframe)上尝试过的。通过阅读其他帖子,这似乎是不可能的,因为您无法访问具有不同来源的iframe的文档,因为它违反了“同一来源”安全策略