2012-04-16 9 views
5

Amazon.comドメインのページ(たとえば、「http://www.amazon.com」)を開いて、JQueryのように挿入しようとしていますこの:PhantomJSを使用してAmazon.comページにJQueryを注入すると、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のバージョンと競合しているのではないかと思う。何か案は?

+0

このような質問にもjavascriptとしてタグを付けてください(次回)。 –

+0

非エイリアスを使用するとどうなりますか? 'jQuery(document)'などです。 – Tejs

+0

これは動作します(ありがとう!)。しかし、なぜ私は理解していない。誰か知っていますか? – grumblebeans

答えて

3

あなたはそうのような別の変数名とnoConflictモードでのjQueryを配置する必要があります。

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

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

は私のために働きました!それがあなたのために働くことを望みます! :)

+0

ああ、はい、それは動作します! –

関連する問題