5

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

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

此代码将打印true到控制台。但是,尝试像这样$(document)从内部访问page.evaluate()

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

phantom.exit();
};

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

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

4

1 回答 1

3

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

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

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

为我工作!希望这对你有用!:)

于 2012-09-17T00:10:37.640 回答