Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 插入<;脚本>;使用jQuery进入iframe_Javascript_Jquery_Iframe - Fatal编程技术网

Javascript 插入<;脚本>;使用jQuery进入iframe

Javascript 插入<;脚本>;使用jQuery进入iframe,javascript,jquery,iframe,Javascript,Jquery,Iframe,我正试图通过jQuery将一个代码段插入iframe,如下所示: var snippet = "<script>document.writeln('test')</script>"; jQuery('<iframe />').appendTo('body').append(snippet); var snippet=“document.writeln('test')”; jQuery(“”).appendTo('body').append(代码段); 它

我正试图通过jQuery将一个代码段插入iframe,如下所示:

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

jQuery('<iframe />').appendTo('body').append(snippet);
var snippet=“document.writeln('test')”;
jQuery(“”).appendTo('body').append(代码段);
它不会在iframe中写入“test”,而是覆盖父窗口


如何使父窗口获得插入了“test”的iframe?

如果要控制新窗口和iframe,应将其源设置为“about:blank”。然后通过iframe的ID引用它

您还需要使用
iframe.contentDocument | iframe.contentWindow.document

在“写入()”文档之前,最好先“打开()”文档

更新:忘记了这一点:如果打开窗口约为:空白,则需要时间加载。。 所以你不能马上给它写信!! 因此,要么将超时设置为大约50ms(通常),然后写入新窗口/iframe。
或者检查它是否已加载(onload),然后让它写入源代码(我更喜欢这个)。
如果需要重用iframe,请先(再次)将其设置为about:blank,然后再次等待或检查onload,然后再再次写入该帧。所有这些都归功于xss安全性。
我还强烈建议使用传统的事件模型(因此没有附加的东西,它们不能像预期的交叉浏览器那样工作,并导致IE中的内存溢出)

因此:在src设置为about:blank的情况下创建iframe,添加一个onload函数检查包含html字符串的变量:如果为空,否则:将其写入iframe并清空字符串。
要更新iframe:将内容设置为包含html字符串的var,然后将iframe的源设置为about:blank。
了解循环吗

这个婴儿甚至在IE6工作

祝你好运

更新:您没有正确转义代码段:应该是:
document.writeln('test')\

见:

更新2:argl。。我通常从不放弃,但因为我不喜欢jQuery,所以我不会阅读jQuery手册来了解像jQuery这样简单的东西(抱歉)。出于现代(糟糕的)安全原因,您需要一个about:blank。句号


请参阅本文了解工作中的“plain jane”基础知识,然后查看如何在jquery中执行此操作,并做出选择:onload或setTimeout。我正在开发自己的交叉浏览器html编辑器,这个主题花了一个多星期才弄清楚

iframe是动态创建的还是在您写入之前已经存在于父窗口中?它是从第二行生成的,但实际上并不重要。感谢您的提示,这并没有解决问题。在一个测试中,我在页面上放置了一些带有about:blank的静态iframe,并通过WebInspector控制台执行示例中的第2行(注入)。它应该给它足够的时间加载,但结果是相同的,打开/写入/关闭可能是关键-让我仔细检查;)对我的答案做了大量更新。应该包含您需要知道的所有内容(如果您仍然想使用jquery,则转换为jquery…)