2012-04-16 11 views
5

के साथ समस्याएं आती हैं I Amazon.com डोमेन (उदाहरण के लिए "http://www.amazon.com") में कोई भी पृष्ठ खोल रहा है और फिर JQuery जैसे इंजेक्ट करने का प्रयास कर रहा है यह:फ़ैंटॉमजेएस का उपयोग करके 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 प्रिंट होगा।

यह कोड उन अन्य डोमेन के साथ काम करता है जिनके साथ मैंने कोशिश की है। मैंने देखा कि अमेज़ॅन के पास JQuery का अपना संस्करण है जो यह लोड करता है और मुझे आश्चर्य है कि यह JQuery संस्करण के साथ विरोधाभासी हो सकता है, जिसे मैं किसी भी तरह लोड कर रहा हूं। कोई विचार?

+0

कृपया इस तरह के प्रश्न जावास्क्रिप्ट के रूप में भी टैग करें (अगली बार)। –

+0

जब आप गैर उपनाम का उपयोग करते हैं तो क्या होता है? उदाहरण के लिए 'jQuery (दस्तावेज़)'। – Tejs

+0

यह काम करता है (धन्यवाद!)। लेकिन मुझे समझ में नहीं आता क्यों। क्या कोई जानता है? – grumblebeans

उत्तर

3

तुम बस इतना की तरह एक वैकल्पिक चर नाम के साथ noConflict मोड में jQuery रखना होगा:

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

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

मेरे लिए काम किया! आशा है कि यह आप के लिए काम करता है! :)

+0

ओह, हाँ, यह काम करता है! –

संबंधित मुद्दे