将javascript函数从iframe注入父窗口
Inject javascript function into parent window from iframe
我正在处理一个项目,该项目有许多在父窗口中打开和关闭的iframe。我有一个需要在iframe之间定义和共享的对象。我遇到的问题是,当在顶部创建对象的iframe关闭时,与之相关的函数就会丢失。
有没有一种方法可以在顶部定义一个对象,即使在原始iframe超出范围后,也可以从我的iframe访问该对象?
我们遇到了这个问题,并最终通过在父文档的头中创建脚本标记来解决它。
所以不是
window.parent.myfunc = function(){...}
我们做了
var script = window.parent.document.createElement('script');
script.text = "var myfunc = function(){...}";
window.parent.document.getElementsByTagName('head')[0].appendChild(script);
虽然有点难看,但它很管用。
您可以将函数声明为iframe父窗口的成员:
window.parent.func = function() {alert("test")};
他们将是可见的每个iframe:
window.parent.func();
您可以通过父窗口上的构造函数创建函数。在这种情况下,函数的引用保留在父窗口上,并且可以从所有iFrame 调用
parent.func = new parent.Function('a','b','alert(a+b);');
它将从每个iFrame 中可见
parent.func(3,4);
以防其他人偶然发现。我发现Javascript函数存储为引用,因此从iframe中定义top.func=function(){…}将创建对顶部函数的引用。这意味着如果iframe丢失,函数也会丢失。
我的解决方案是创建一个隐藏在后台的iframe,并在需要定义该函数时创建。
一种解决方案可能是使用iframe的src的查询字符串传递它们,或者将对象存储在服务器会话中。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 防止Iframe窗体在新窗口中打开
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调整窗口大小时,可拖动的对象会出现在容器外部
- Javascript排序的图像弹出窗口..可以't单独弹出
- 窗口大小html css
- 使用Objective-C的JavaScript注入方法
- 弹出窗口出现,然后退出
- jQuery模式窗口在内容为“”时不居中;注入“;在飞行中
- 在注入的html按钮上启动弹出窗口
- 将内容脚本注入到不同扩展名的操作弹出窗口中的 iframe 中
- 当子窗口准备就绪时,使用 jQuery 将 HTML 从父窗口注入子窗口
- Chrome 扩展程序:在注入脚本之前,将数据从弹出窗口传递到另一个脚本文件
- 为什么在iframe中注入的JavaScript使用父窗口作为其全局作用域
- 将javascript函数从iframe注入父窗口
- 用executeScript()将数据从弹出窗口传递到由弹出窗口注入的内容脚本
- 如何将html注入Angular UI引导弹出窗口
- Chrome扩展-在弹出窗口的onMessage没有从注入的脚本接收消息
- Safari扩展:将窗口对象从注入脚本传递到全局页面
- 让窗口加载等待javascript注入的内容