簡體   English   中英

插入<script> into iframe with jQuery

[英]Inserting <script> into iframe with jQuery

我試圖通過jQuery將代碼段插入iframe,如下所示:

var snippet = "<script>document.writeln('test')</script>";

jQuery('<iframe />').appendTo('body').append(snippet);

它不是在iframe中編寫“test”,而是覆蓋父窗口。

我怎樣才能使父窗口獲得插入了“test”的iframe?

如果要控制它們,則應將新窗口和iframe的源設置為“about:blank”。 然后通過iframe的ID引用它!

您還想使用iframe.contentDocument || iframe.contentWindow.document iframe.contentDocument || iframe.contentWindow.document
在你寫'()之前'打開()'文件可能是個好主意。

更新:忘了這個:如果你打開窗口關於:空白,它需要時間加載..所以你不能馬上寫! 因此要么設置超時約50ms(通常),然后寫入新窗口/ iframe。
或檢查它是否已加載(onload),然后讓它寫入源(我更喜歡這個)。
如果您需要重復使用iframe,請將其設置為about:blank first(再次)並等待或再次檢查onload,然后再次寫入幀。 所有這一切都歸功於xss安全性。
我還強烈建議使用傳統的事件模型(因此沒有addEvent的東西,它們不能像預期的crossbrowser一樣工作並導致IE中的memoryleaks)。

所以:創建iframe並將src設置為about:blank,添加一個onload函數來檢查包含你的html-string的var:如果它是空的,否則:將它寫入iframe並清空字符串。
要更新iframe:將內容設置為包含html-string的var,然后將iframe的源設置為about:blank。
了解循環?

這個寶寶甚至可以在IE6中使用......

祝好運!!

更新:你沒有正確地逃避你的代碼片段:應該是: <script>document.writeln('test')\\<\\/script>
見: jsfiddle

UPDATE2:argl ..我通常都不會放棄,但由於我不關心jQuery,我不會通過jQuery手冊來獲取像jQuery這樣簡單的東西(對不起)。 出於現代(蹩腳)的安全原因,您需要一個:空白。 期。

請參閱這個更新的小提琴 ,了解工作中的“簡單jane”基礎知識,然后了解如何在jquery中進行操作並做出選擇:onload或setTimeout。 我正在使用我自己的crossbrowser html-editor,這個主題需要花費一周的時間來搞清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM