Javascript 如何在Iframe中读取加载的脚本?
如何读取Iframe中加载的脚本? 我想回显iframe之外的变量,并在iframe之外使用script.js中的变量 我的代码:Javascript 如何在Iframe中读取加载的脚本?,javascript,jquery,html,iframe,Javascript,Jquery,Html,Iframe,如何读取Iframe中加载的脚本? 我想回显iframe之外的变量,并在iframe之外使用script.js中的变量 我的代码: <script type="text/javascript"> var myIFrame = document.getElementById(ifr_id); var script = myIFrame.contentWindow.document./*script.js*/; </script> (但我想要相反的结果) 像这样
<script type="text/javascript">
var myIFrame = document.getElementById(ifr_id);
var script = myIFrame.contentWindow.document./*script.js*/;
</script>
- (但我想要相反的结果)
- 像这样读出来
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);
}
}
var scripts=myIFrame.contentWindow.document.getElementsByTagName(“脚本”);
对于(var i=0;i这取决于iFrame的来源。如果iFrame源域与父DOM的一个域相同,那么您可以访问该iFrame的DOM。这将允许您使用jquery获取脚本元素。但是我不确定这一点。我从未尝试将javascript作为html获取
$('iframe > script').html();
然后,您可以使用console.log()在控制台或父dom中显示它
如果源域不相同,则需要使用如下插件:
此插件允许来自不同域的iframe相互通信。但是,您需要访问iframe源代码才能将此javascript包含在iframe中。首先,为了访问iframe元素,源页面和iframe必须位于同一域中,或者具有CORS启用以允许资源共享
假设您可以访问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);
现在脚本元素已经添加到文档中,它将异步执行,我们可以在脚本执行时做出反应,这要感谢onload回调访问,以便做什么?一点上下文可能会有所帮助。没什么,我想读取加载到Iframe中的js文件。也许您可以编写一个函数并调用该函数检查是否包含js。@WQuaniran您确定您可以访问iframe内容中的对象吗?是的,但我不知道如何读取它们。在script.js中有一些变量。我想读取它们。我还可以使用类似于scripts[I]的东西吗.data
?.data不返回任何内容。您需要什么数据?当您拥有脚本标记的src或innerHTML时,您可以访问其内容。。。
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
};