我知道这个主题已经被广泛讨论了,由于安全原因,没有办法让父框架修改子框架
但是
我正在为一些客户开发一个特别的解决方案,我们可以配置他们的浏览器,并最终安装插件(这将是"失败"的解决方案(。我们希望将浏览器(chrome或其他(配置为不保护浏览器免受此影响。
我的目标是在没有任何访问权限的情况下将JavaScript注入他们的网站。
我实际上使用了一个php代理,它可以。。。非常糟糕(当链接通过JavaScript动态加载时,如何保持链接?(,我不想开发Firefox插件,因为我想它的设置有点重,也有点长。
知道吗?
您的问题不太清楚。但是,如果你想在iframe中加载一个与父域不同的域,就无法访问它,除非你的客户使用开源浏览器,并且很乐意你在他们的系统上安装一个允许这样做的黑客版本的浏览器。
但我可以向你保证,由于各种原因,这种情况不会发生。
tl;医生:你不能。
对于最近的浏览器,您可以使用window.postMessage
在来自2个不同域的2个帧之间进行通信。
如果你必须支持IE6/IE7或更早的浏览器,你可以使用window.name
破解。
这两种技术都允许在帧之间传递字符串数据。然后,您需要在双方都有一些javascript来侦听事件并执行操作。您不需要对浏览器配置进行任何更改。
编辑:
在你的评论之后,这里有另一个选项:书签。您可以在站点上定义这样的页面,更改js文件的路径:
<html>
<body>
<a href="javascript:(function(){var s=document.createElement('SCRIPT');s.src='/url/to/your.js?'+(Math.random());document.getElementsByTagName('head')[0].appendChild(s);})()">Drag'n Drop this to your bookmarks</a>
</body>
</html>
当你的用户希望你的代码运行时,你会要求他们点击书签
这将在客户端页面中注入代码,您可以自由地做您想做的事情。
显然,这是出于安全考虑。您的脚本在其页面中具有完全访问权限(内容、cookie(。但由于您几乎已经准备好重新编译web浏览器了:(我想这对他们来说是可行的。