मैं एक क्रोम एक्सटेंशन बनाना चाहता हूं जो window
के अंदर एक नई वस्तु प्रदान करता है। जब ब्राउज़र में एक्सटेंशन के साथ ब्राउज़र में एक वेब पेज देखा जाता है, तो मुझे जावास्क्रिप्ट के माध्यम से उपलब्ध होने के लिए window.mything
चाहिए। window.mything
ऑब्जेक्ट में कुछ फ़ंक्शन होंगे जिन्हें मैं एक्सटेंशन में परिभाषित कर दूंगा, और इन फ़ंक्शंस को console.log
या किसी भी जावास्क्रिप्ट फ़ाइल से कॉल करने योग्य होना चाहिए जब पृष्ठ को ब्राउज़र में एक्सटेंशन सक्षम किया गया हो।विंडो ऑब्जेक्ट को Chrome एक्सटेंशन से संशोधित किया जा सकता है?
मैं सफलतापूर्वक एक Content Script का उपयोग करके एक जावास्क्रिप्ट पेज में फ़ाइल इंजेक्षन करने में सक्षम था:
var s = document.createElement("script");
s.src = chrome.extension.getURL("mything.js");
document.getElementsByTagName("head")[0].appendChild(s);
mything.js इस तरह दिखता है:
window.mything = {thing: true};
console.log(window);
जब भी कोई पृष्ठ लोड हो तो मैं देख रहा हूँ पूरे window
ऑब्जेक्ट के रूप में मैं कंसोल में होने की उम्मीद करता हूं। हालांकि, मैं कंसोल से window.mything
ऑब्जेक्ट से बातचीत नहीं कर सकता। ऐसा लगता है कि इंजेक्शन स्क्रिप्ट ने वास्तव में वैश्विक window
ऑब्जेक्ट को संशोधित नहीं किया है।
मैं क्रोम एक्सटेंशन से वैश्विक window
ऑब्जेक्ट को कैसे संशोधित कर सकता हूं?
यह असंभव है। क्या आप सही कंसोल देख रहे हैं, क्या स्क्रिप्ट वास्तव में निष्पादित है (दस्तावेज का निरीक्षण करें और स्क्रिप्ट टैग/सिंटैक्स त्रुटियों के लिए जांच करें)? स्क्रिप्ट निश्चित रूप से पृष्ठ के संदर्भ में चलता है, और इसलिए, 'mything' अस्तित्व में होना चाहिए। –