2012-04-01 11 views
5

में दुर्गम वस्तुओं मेरी कोड में मैं एक लाइन है कि वर्तमान विंडो (जो एक यूट्यूब वीडियो पेज होता है) उदासीनता है:जावास्क्रिप्ट FireBug में दिखाई दे, कोड

Firebug.Console.log(myWindow); 

यह देखा जा सकता है कि खिड़की वस्तु शामिल "yt" संपत्ति है, जो किसी अन्य वस्तु है कि आसानी से डीबगर में निरीक्षण किया जा सकता है:

http://i.imgur.com/lHHns.png

दुर्भाग्य से, बुला

Firebug.Console.log(myWindow.yt); 

लॉग इन "अनिर्धारित" - वह क्यों है, और मैं इस "yt" संपत्ति को कैसे एक्सेस कर सकता हूं?

संपादित करें: एक जोड़ जो महत्वपूर्ण हो सकता है: जो कोड मैं लिख रहा हूं वह फ़ायरफ़ॉक्स एक्सटेंशन का हिस्सा है, इसलिए यह वास्तव में एक पेगा के अंदर नहीं चल रहा है, लेकिन क्रोम में - मुझे लगता है कि यह हो सकता है कि यह हो सकता है कारण। क्या स्क्रिप्ट टैग में कोड के विपरीत क्रोम स्क्रिप्ट किसी भी तरह सीमित/acces में सीमित हो सकती है?

+0

मेरा अनुमान फ़ायरबग के साथ कुछ करना है, क्योंकि मैं इसे क्रोम कंसोल से ठीक से एक्सेस कर सकता हूं। – Griffin

+0

बस यह सुनिश्चित कर लें, क्या आप 'Firebug.Console.log (myWindow.yt) को कॉल करते हैं; 'बिल्कुल उसी पंक्ति पर' Firebug.Console.log (myWindow);'? –

+0

@ ग्रिफिन: यह मामला नहीं है, मैं इसे क्रोम या अन्य डेवलपर टूल के माध्यम से भी acces कर सकता हूं, लेकिन यह अभी भी ब्राउज़र में चल रहे कोड के लिए अदृश्य है - न केवल मैं इसे फायरबग के माध्यम से लॉग नहीं कर सकता, मैं इसे कॉल नहीं कर सकता तरीकों और न ही कुछ भी। –

उत्तर

2

सुरक्षा कारणों से, फ़ायरफ़ॉक्स एक्सटेंशन सीधे वेब पेज ऑब्जेक्ट्स तक नहीं पहुंचते हैं लेकिन wrapper के माध्यम से। यह रैपर आपको डीओएम ऑब्जेक्ट्स द्वारा परिभाषित सभी गुणों का उपयोग करने की अनुमति देता है लेकिन पेज जावास्क्रिप्ट द्वारा जोड़ा गया कुछ भी अदृश्य होगा। आप access the original object कर सकते हैं:

Firebug.Console.log(XPCNativeWrapper.wrappedJSObject.yt); 

हालांकि, अगर आप एक विस्तार से वेब पेज के साथ बातचीत करने आप विकल्पों पर विचार करना चाहिए जहां वेब पेज आपके साथ चाल चल नहीं कर सकते हैं (उदाहरण के लिए सामग्री विंडो में आम कोड चलाने: myWindow.location.href = "javascript:...") चाहते हैं ।

0

फ़ायरफ़ॉक्स और क्रोम एक्सटेंशन सुरक्षा कारणों से पृष्ठ के भीतर जावास्क्रिप्ट तक नहीं पहुंच सकते हैं।

0

मैंने एसिंक्रोनस एपीआई का उपयोग करके इस तरह भ्रम देखा है।

console.log(obj); भरने वाले ऑब्जेक्ट की सामग्री को दिखाता है, लेकिन कोड में ऑब्जेक्ट गुणों तक पहुंचने पर, वास्तव में कॉल असीमित होने के कारण वे वास्तव में पॉप्युलेट नहीं होते हैं।

क्रोम और फ़ायरफ़ॉक्स उन्हें भरने वाले सभी को दिखाता है शायद यह केवल एक समय मुद्दा है क्योंकि वे शायद console.log() को असीमित रूप से संसाधित करते हैं।

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