是否可以将脚本附加到iframe?

3
我想知道是否可以在加载外部网页的iframe中添加/附加JavaScript,而该网页不在我的网站上。 是否可以使用jQuery或简单的JavaScript实现?
  <script>
  // i need some code here
  </script>
  <iframe src="http://www.xxx.xxx/" id="myiframe" />

注意:我不想替换iframe的内容,我只想添加脚本。
谢谢。

2
你在脚本中尝试使用 iframe 做什么? - Tim S. Van Haren
1
如果外部站点是“友好的”站点 - 也就是说,你认识开发人员并且他们乐意这样做,你可以要求他们从你的网站拉取一个脚本 - 具有不同域的 src 属性的 <script> 标记是允许的。 这可以用于应用一些诡计,通过动态生成的脚本(即基于 URL 查询字符串输出 js 文件的 php 等)或设置 XDM 框架,例如 easyXDM,从而允许与您的站点通信。但是,如果你不认识其他站点的作者,或者不能让他们添加你的脚本,那么这是不可能的。 - Graza
3个回答

10
不,这是不可能的(也完全正确),因为它违反了同源策略。允许用户脚本另一个域上的内容将是一个相当大的安全漏洞,任何事情都有可能,从钩取键盘到窃取个人数据。

5
如果iframe涉及来自不同域的内容,浏览器就不会让你的代码在其中操作。

1
有一个解决方法叫做iframe代理,但是使用起来有点困难。 - Aykut Akıncı
@Aykut:代理必须在托管页面的域上,您必须向文档添加<base>标签,但这是一个hacky解决方案,仍然会有问题。 - Andy E

0

由于安全策略的限制,这是不可能的。

然而,如果你真的想做到这一点,并且已经理解了安全问题,你可以尝试使用Ajax跨域这样的解决方案。


我看不出ACD在这里有什么帮助。他正在使用iframe包含内容,而ACD只是用于跨域请求的解决方法。它并不能以任何方式帮助访问不同源文档的DOM。 - Andy E

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接