找不到变量 - PhantomJS

Ant*_*ine 12 javascript phantomjs

经过几个小时毫无结果的搜索,我在这里发帖.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();     

    }  

})
Run Code Online (Sandbox Code Playgroud)

谢谢=)

Ari*_*yat 19

" 快速入门"教程(在"代码评估"部分中)中有一条重要信息:

要在网页上下文中评估JavaScript或CoffeeScript代码,请使用evaluate()函数.执行是"沙盒",代码无法访问其自身页面上下文之外的任何JavaScript对象和变量.可以从evaluate()返回一个对象,但它仅限于简单对象,不能包含函数或闭包.

因此,您的代码存在两个问题:

  1. 变量elem在网页上下文之外初始化,从第二个不可访问evaluate.
  2. 您返回一个非简单对象,即DOM元素.

这是一个容易解决的问题,主要是通过正确设计代码以适应实际的"被监禁"执行模型.请仔细阅读所有相关文档并探索大量包含的示例.

  • 不错的工作!好笑,你有唯一的答案,你的姓氏恰好意味着"指导" (2认同)