【问题标题】:null for elements in phantomjsphantomjs 中的元素为 null
【发布时间】:2013-02-11 08:17:03
【问题描述】:

我在 phantomjs 中运行了这段代码。我不知道为什么 form.elements 一直返回 null 给我。我在 chrome 开发者控制台上运行了相同的代码,得到了我想要的正确结果。

我对 javascript 和所有相关的东西都很陌生。请提供一些启示。

var page = require('webpage').create();
page.open('http://www.kayak.com', function (status) {
    if (status !== 'success') {
        console.log('Unable to access network');
    } else {
        var form = page.evaluate(function(){
             return document.getElementById('searchform');
        });
        console.log(form.elements[2].value);
    }
    phantom.exit();
});

【问题讨论】:

    标签: javascript phantomjs


    【解决方案1】:

    您不能通过evaluate 传递非原始对象。 documentation中提到了这一点:

    注意:评估函数的参数和返回值必须是简单的原始对象。经验法则:如果它可以通过 JSON 序列化,那就没问题了。闭包、函数、DOM 节点等将不起作用!

    虽然这是使用 PhantomJS 时最常见的错误,但这很容易解决。只要确保在evaluate 中尽可能多地完成所有处理,然后返回一个简单的对象。详情请仔细研究documentation,向所有包含的examples学习。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多