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コンソールに出力します。

このコードは、私が試した他のほとんどのドメインで動作します。Amazon がロードする独自のバージョンの 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 に答える