jquery - 使用 PhantomJS 将 JQuery 注入(inject) Amazon.com 页面会导致 JQuery 出现问题

标签 jquery phantomjs

我正在打开 Amazon.com 域中的任何页面(例如“http://www.amazon.com”),然后尝试像这样注入(inject) JQuery:

var injected = page.injectJs('jquery-1.7.1.js');
console.log("jquery was injected successfully: " + injected);

此代码会将 true 打印到控制台。但是,尝试从 page.evaluate() 中访问 $(document),如下所示:

page.onLoadFinished = function (status) {
    var results = page.evaluate(function() {
        $(document);    
    });

phantom.exit();
};

将在控制台打印 TypeError: 'undefined' is not a function

此代码适用于我尝试过的大多数其他域。我注意到 Amazon 似乎有自己加载的 JQuery 版本,我想知道它是否可能与我正在加载的 JQuery 版本发生冲突。有什么想法吗?

最佳答案

您只需将 jQuery 置于 noConflict 模式,并使用备用变量名称,如下所示:

var results = page.evaluate(function () {
    $jq = window.jQuery;
    $jq.noConflict();

    console.log("Title: " + $jq('title').text());
});

为我工作!希望对你有帮助! :)

关于jquery - 使用 PhantomJS 将 JQuery 注入(inject) Amazon.com 页面会导致 JQuery 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10177381/

相关文章:

javascript - 使用带间隙的箭头进行水平滚动

javascript - 单击多个按钮后,如何更改使用 <button> 标签创建的按钮的文本?

javascript - casperjs 按钮点击不导航到下一页

javascript - 无法使用 facebook 插件 casperJS 打开页面

java - PhantomJS Selenium NoSuchElementException

javascript - 如何创建子行来显示 jquery 数据表中的订单详细信息?

Jquery - 验证多个字段(分组字段),其中所有字段都有效

jquery - 使用 Jquery 使用默认值填充字段

javascript - 点击后如何获取更新内容?

javascript - 使用返回错误的小 js 脚本使用 R 和 phantomjs 进行 Web 抓取