如何在Iframe中读取加载的脚本
How can I read the loaded scripts in an Iframe?
如何读取Iframe中加载的脚本
我想回显iframe外部的变量,并在iframe之外使用script.js中的变量。
我的代码:
<script type="text/javascript">
var myIFrame = document.getElementById(ifr_id);
var script = myIFrame.contentWindow.document./*script.js*/;
</script>
在Iframe的<head>
:<script type="text/javascript" src="script.js"></script>
。
script.js:
$rootScope.texts = {
content : 'inceptos suspendisse etiam tempor posuere volutpat tempor dapibus varius nullam sagittis nibh amet in mattis quisque, conubia tempor at eros turpis erat, phasellus tincidunt tristique nisl.',
copyright : '--- © 2014 RobbieWilliams Interactive. All rights reserved.',
};
- 我如何加载<脚本>#39;s变成了iframe?(但我想要相反的)
像这样读出
var scripts = myIFrame.contentWindow.document.getElementsByTagName("script");
for (var i=0;i<scripts.length;i++) {
if (scripts[i].src) {
console.log(i,scripts[i].src);
} else {
console.log(i,scripts[i].innerHTML);
}
}
这应该行得通。
或者您可以尝试使用myIFrame.contentWindow.document.scripts
。看见https://developer.mozilla.org/en-US/docs/Web/API/document.scripts
这取决于iFrame的来源。如果IFrame源域与父DOM的源域相同,则可以访问该IFrame的DOM。这将允许您使用jquery获取脚本元素。豪威,我不确定。我从未尝试过将javascript作为html。
$('iframe > script').html();
然后,您就可以使用console.log()在控制台中显示它,或者在父dom中显示它。
如果源域不相同,则需要使用如下插件:http://benalman.com/projects/jquery-postmessage-plugin/
这个插件允许来自不同域的iframe相互通信。但是,您需要访问iframe源代码才能将此javascript包含在iframe中。
首先,为了访问iframe元素,源页面和iframe必须在同一域中,或者启用CORS以允许资源共享。
- 同源政策
- 打破跨领域壁垒
- 规避同源政策的方法
- 用jQuery AJAX加载跨域html页面
假设您可以访问iframe内容,则可以获得iframe的内容:
var iframe = $('#frame_main').contents(),
scripts = iframe.find('script'),
target = scripts.find('[src$="script.js"]').first();
现在我们有了脚本,我们将在页面中异步插入和执行脚本,并在加载脚本时使用onload事件的回调做出反应。
var js = document.createElement('script');
js.type = 'text/javascript';
js.src = target.attr("src");
js.onload = function() {
// do something when the script has been executed
};
正如我们所知,HTML是线性呈现的(除非调用方函数是异步回调),这意味着当前执行的脚本是最后一个,所以我们将在当前脚本之后插入新脚本。
var currentScript = $("script").last();
currentScript.after(js);
现在,script元素已经添加到文档中,它将异步执行,并且由于onload回调,我们可以在执行脚本时做出反应。
- Google Adsense多次加载脚本
- 如何准确执行加载脚本&退出弹出窗口
- RequireJ无法随机加载脚本
- 通过浏览器加载页面时触发加载脚本(js或jQuery)'s”;返回“;作用
- 在以前的文件夹中加载脚本
- 如何重新加载脚本标记
- 正在脚本中加载脚本
- 在pjax完成其工作时加载脚本
- I'我用setTimeout加载脚本,你能找到一个更快的方法吗
- 在页面模板上加载脚本
- 如何在我的情况下创建加载脚本
- 当用$.getScript()加载脚本时,有一种方法可以从用$.get script()装载的脚本中调用父脚本中的函数
- 延迟加载 脚本加载和/或执行
- 如何使用谷歌页面速度CSS加载脚本延迟多个CSS文件
- 最后加载脚本
- 如何基于HTML中的类加载脚本
- 在局部视图中加载脚本文件
- 如何防止在使用hapi.js reply().hold()时重新加载脚本
- 异步加载脚本
- 脚本加载脚本广告