找不到变量 - PhantomJS(Can't find variable - Phant

2019-07-21 06:02发布

我张贴在这里多小时无觅之后。 运行我的脚本时PhantomJS不允许我使用一个变量,如下面的代码,并显示错误消息“无法找到变量”。

你有任何想法,可能是我的问题吗?

page.open(myurl, function (status) {

    if (status == 'success') {

        page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js", function() {

            elem = page.evaluate(function () {

                /* Select one element with jQuery */
                myElem = $('body');
                return myElem;

            })

            var elemHtml   = page.evaluate(function() { return $(elem).html(); });
            console.log(elemHtml);

        })

        phantom.exit();     

    }  

})

谢谢=)

Answer 1:

有信息的一个重要棋子快速入门教程(其代码评估部分):

在网页的背景下评估的JavaScript或CoffeeScript的代码,使用评估()函数。 执行是“沙盒”,是没有办法的代码来访问自己的页面背景之外的任何JavaScript对象和变量。 对象可以从评估(),但它被限制为简单的对象被返回,并且不能包含功能或封闭件。

与你的代码的问题是这样两个方面:

  1. 可变elem在网页环境之外初始化,它不是从到达第二个evaluate
  2. 你返回一个非简单的对象,即DOM元素。

这是解决的,主要是通过适当地设计代码,以适应实际的“囚禁”执行模型一个简单的问题。 请仔细阅读所有相关文件,并探索吨包含的例子 。



文章来源: Can't find variable - PhantomJS