javascript - Why does appending a <script> to a dynamically created <iframe> seem to run the script in the parent page? -
मैं एक & lt; iframe & gt; जावास्क्रिप्ट का उपयोग कर, फिर एक & lt; स्क्रिप्ट & gt; तत्व & lt; iframe & gt; के लिए तत्व जिसे मैं & lt; iframe & gt; d दस्तावेज़ के संदर्भ में चलाना चाहता हूं।
दुर्भाग्यवश, ऐसा लगता है कि मैं कुछ गलत कर रहा हूं - मेरा जावास्क्रिप्ट सफलतापूर्वक निष्पादित होता है, लेकिन & lt; स्क्रिप्ट & gt; पैरेंट पेज है, & lt; iframe & gt; d दस्तावेज़ नहीं है जब भी ब्राउज़र iframe_test.js का अनुरोध करता है, तो मुझे फ़ायरबग के "नेट" टैब में 301 त्रुटि भी मिलती है, हालांकि यह फिर से अनुरोध करता है (सुनिश्चित क्यों नहीं?) सफलतापूर्वक।
यह मैं जिस कोड का उपयोग कर रहा हूं (पर लाइव डेमो):
iframe_test.html
& lt;! DOCTYPE html public "- // W3C // डीटीटी एक्सएचटीएमएल 1.0 सशक्त // एन "" http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> & Lt; html xmlns = "http://www.w3.org/1999/xhtml" xml: lang = "en" lang = "en" & gt; & Lt; शीर्ष & gt; & Lt; मेटा http-equiv = "सामग्री-प्रकार" सामग्री = "पाठ / html; वर्णसेट = यूटीएफ -8" / & gt; & Lt; title & gt; & amp; lt; आइफ्रेम & amp; gt; परीक्षण & lt; / title & gt; & Lt; / head & gt; & LT; बॉडी & gt; & Lt; div id = "बाल्टी" & gt; & lt; / div & gt; & Lt; स्क्रिप्ट प्रकार = "टेक्स्ट / जावास्क्रिप्ट" src = "http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js" & gt; & lt; / स्क्रिप्ट & gt; & Lt; स्क्रिप्ट प्रकार = "टेक्स्ट / जावास्क्रिप्ट" & gt; $ (दस्तावेज़) .ready (फ़ंक्शन () {$ ('# बाल्टी')। ऐप ('& lt; iframe id = "test" & gt; & lt; / iframe & gt;'); setTimeout (फ़ंक्शन () {var iframe_body = $ ('#test')। सामग्री ()। ('शरीर') खोज; iframe_body.append ('& lt; scr' + 'ipt प्रकार = "पाठ / जावास्क्रिप्ट" src = "http://onespot.wsj.com/ स्थिर / iframe_test.js "& gt; & lt; / scr '+' ipt & gt; ');}, 100);}); & Lt; / स्क्रिप्ट & gt; & Lt; / body & gt; & Lt; / html & gt;
iframe_test.js
$ (फ़ंक्शन () {var test = '& lt; p & gt; यह नहीं होना चाहिए & Amp; amp; lt; iframe & gt;? & Lt; / p & gt; '$ (' body ') के अंदर हो। एपेंड (परीक्षण);});
असामान्य लगता है कि एक बात यह है कि कोड में iframe_test.js भी काम करता है; मैंने & lt; iframe & gt; में jQuery लोड नहीं किया है स्वयं, केवल मूल दस्तावेज में। यह मेरे लिए एक सुराग जैसा लगता है, लेकिन मैं समझ नहीं सकता कि इसका क्या मतलब है।
कोई भी विचार, सुझाव, आदि बहुत सराहना की जाएगी!
< Div class = "post-text" itemprop = "text">
एक ही समस्या थी, समाधान खोजने के लिए मुझे समय लगा। आपको iframe के दस्तावेज़ का उपयोग करके स्क्रिप्ट की ऑब्जेक्ट बनाने की आवश्यकता है।
var myIframe = document.getElementById ("myIframeId"); Var स्क्रिप्ट = myIframe.contentWindow.document.createElement ("स्क्रिप्ट"); Script.type = "text / javascript"; Script.src = src; myIframe.contentWindow.document.body.appendChild (स्क्रिप्ट);
एक आकर्षण की तरह काम करता है!
Comments
Post a Comment