gpt4 book ai didi

动态加载到 iframe 的 JavaScript 在父范围内运行

转载 作者:行者123 更新时间:2023-11-30 13:20:24 25 4
gpt4 key购买 nike

我有一个 iframe,我使用以下代码将一些 html+javascript 动态加载到其中:

var allMyCode = "<div id='test'>html code</div> <script type='text/javascript'>alert(document.getElementById('test').innerHTML);<\/script>";
$("#myFrame").contents().find("body").html(allMyCode);

问题是我想提醒文本“html代码”,但它实际上在父级的div中获取了id为“test”的html,所以它没有引用自己。我在这个 fiddle 中展示了这个:http://jsfiddle.net/BNG4n/

为什么要这样做,我怎样才能让 JavaScript 在它自己的范围内运行!?

最佳答案

因为 jQuery 在设置 iframe 的 body 元素的 html 之前执行脚本元素,它总是在父范围内。

您可以尝试创建一个脚本元素并将其附加到 iframe 的正文中,它将按预期工作。

像这样。

var allMyCode = "<div id='test'>html code</div>";
$("#myFrame").contents().find("body").html(allMyCode);
var el = document.createElement("script");
el.setAttribute("type","text/javascript");
el.innerHTML = "alert(document.getElementById('test').innerHTML);";
$("#myFrame").contents().find("body")[0].appendChild(el);

工作演示 - http://jsfiddle.net/BNG4n/1/

关于动态加载到 iframe 的 JavaScript 在父范围内运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10401260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com