6

मुझे पॉपअप.html और एक इंजेक्शन सामग्री स्क्रिप्ट के साथ क्रोम एक्सटेंशन मिला है। इंजेक्शन सामग्री स्क्रिप्ट के साथ मैं यूट्यूब के जावास्क्रिप्ट एपीआई कार्यों तक पहुंचने की कोशिश कर रहा हूं और यह सब एक के अलावा ठीक काम करता है: addEventListener।सामग्री स्क्रिप्ट में addEventListener काम नहीं कर रहा

यूट्यूब के जावास्क्रिप्ट एपीआई की घटना श्रोता वीडियो बदलने के लिए वीडियो की स्थिति सुनता है। तो अगर वीडियो के अंत 0.

var currentVideo = document.getElementById('movie_player'); 
currentVideo.addEventListener("onStateChange", "onytplayerStateChange"); 

function onytplayerStateChange() { 
    console.log("The state of the player has changed"); 
} 

करने के लिए राज्य में परिवर्तन तक पहुँच जाता है इस कोड में एक सामान्य वातावरण में बस ठीक काम करता है, लेकिन यह सामग्री स्क्रिप्ट में काम करने के लिए विफल रहता है। मैं अपनी सामग्री स्क्रिप्ट में बदलती घटनाओं को क्यों नहीं पकड़ सकता? कोई विचार?

+0

[यूट्यूब घटनाक्रम के साथ एक क्रोम एक्सटेंशन बिल्डिंग] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/9515704/building-a-chrome-extension-with-youtube-events) –

उत्तर

7

सामग्री स्क्रिप्ट वर्तमान पृष्ठ के दायरे में नहीं चलती हैं। ईवेंट हैंडलर इस जवाब में वर्णित है, एक और <script> टैग के माध्यम से इंजेक्ट किया गया है: Building a Chrome Extension with Youtube Events:

var actualCode = 'function onytplayerStateChange() {' 
       + ' console.log("The state of the player has changed");' 
       + '}'; 

var script = document.createElement('script'); 
script.textContent = actualCode; 
(document.head||document.documentElement).appendChild(script); 
script.parentNode.removeChild(script); 

पी एस। डीओएम सामग्री स्क्रिप्ट के लिए उपलब्ध है, इसलिए ईवेंट हैंडलर बाध्यकारी काम करता है।

+0

निश्चित रूप से एक noob सवाल पर कैसे क्या आप वास्तविक कोड चर में विभिन्न वर्णों के साथ कोड डालते हैं? मैं एक यूआरएल (http://www.example.com) जोड़ना चाहता हूं लेकिन यह "अप्रत्याशित स्ट्रिंग" देता है। – jefvlamings

+0

@ user1279300 कोड ("विधि 1") को शामिल करने के लिए एक और सुविधाजनक विधि सहित अधिक जानकारी के लिए लिंक किए गए उत्तर को देखें। जब आप सीधे स्क्रिप्ट में कोड डालते हैं, उद्धरण, न्यूलाइन और अन्य विशेष पात्रों को बैकस्लैश का उपयोग करके भागना पड़ता है। –

+0

धन्यवाद रॉब। मुझे खेद है अगर मैं आपको इन सवालों के साथ परेशान करता हूं लेकिन यहां एक और है। मैं वास्तव में ईवेंट श्रोता को बाकी सामग्री स्क्रिप्ट के साथ संवाद करने के लिए चाहता हूं। मैं वीडियो के अंत में एक जेनरेट यूआरएल खोलना चाहता हूं। तो यदि वर्तमान स्थिति = 0 -> सामग्री स्क्रिप्ट में निर्दिष्ट यूआरएल पर जाएं। क्या "वास्तविक कोड" टुकड़े में गतिशील रूप से एक चर जोड़ने का कोई तरीका है? – jefvlamings

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