【问题标题】:Is it possible to append a script to an iframe?是否可以将脚本附加到 iframe?
【发布时间】:2010-02-04 21:38:42
【问题描述】:

我想知道是否可以将 javascript 添加/附加到 iframe,该 iframe 加载了不在我的网站中的外部网页。是否可以使用 jQuery 甚至简单的 javascript?

  <script>
  // i need some code here
  </script>
  <iframe src="http://www.xxx.xxx/" id="myiframe" />

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

谢谢

【问题讨论】:

  • 你想用脚本中的 iframe 做什么?
  • 如果外部站点是“友好”站点 - 也就是说,您认识开发人员并且他们很乐意这样做,您可以要求他们从您的站点中提取脚本 - @987654322允许来自不同域的具有src 属性的@ 标记。这可用于应用一些技巧,通过动态生成的脚本(即基于 URL 查询字符串输出 js 文件的 php 等)或设置 XDM 框架(如 easyXDM)来允许与您的站点进行通信。但如果您不认识其他网站的作者,或者无法让他们添加您的脚本,则不可能。

标签: javascript jquery cross-domain


【解决方案1】:

不,这是不可能的(也完全正确),因为它违反了same origin policy。允许用户编写另一个域上的内容脚本将是一个相当大的安全漏洞,从密钥挂钩到窃取个人数据,任何事情都可能发生。

【讨论】:

    【解决方案2】:

    如果 iframe 涉及来自不同域的内容,浏览器不会让您的代码在其中四处游荡。

    【讨论】:

    • 有一个解决方法,称为 iframe 代理。但它有点难用。
    • @Aykut:代理必须在托管页面的域上,并且您必须将&lt;base&gt; 标签添加到文档中,但这是一个hacky 解决方案,您仍然会遇到问题。
    【解决方案3】:

    由于安全政策,这是不可能的。

    但是,如果你真的想这样做,并且了解安全问题,你可以尝试像Ajax Cross domain这样的解决方案

    【讨论】:

    • 我看不出 ACD 在这里有什么帮助。他将内容包含在 iframe 中,而 ACD 只是针对跨域请求的一种解决方法。它对访问不同原始文档的 DOM 没有任何帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多