【问题标题】:best way to inject javascript into a iframe将 javascript 注入 iframe 的最佳方法
【发布时间】:2012-11-12 05:22:02
【问题描述】:

我正在尝试将 javascript 注入 iframe,但没有任何效果。我已经在这个问题上花了几天时间,如果有人能给我一些提示,那就太好了。

主题示例:

example.html:

<html>
<head>

</head>
<body>
<iframe src="http://example.com/test.html" id="myFrame">
</iframe>
</body>
</html>

test.html:

<html>
<head>

</head>
<body background="./bg.jpg">
<p >Text </p>
<p >(<i>Something</i>)<br><img src="./img1.gif" align="left">Text</p>´
</body>
</html>

test.html 的所需输出:

<html>
<head>
<script type="text/javascript"> src="myscript.js</script>
</head>
<body background="./bg.jpg">
<p >Text </p>
<p >(<i>Something</i>)<br><img src="./img1.gif" align="left">Text</p>´
</body>
</html>


这个我试过了,还是不行:

example.html:

<html>
<head>

<script type="text/javascript">
var rawframe = document.getElementById('myFrame');
var doc = rawframe.contentDocument;
if (!doc && rawframe.contentWindow) {
    doc = rawframe.contentWindow.document;
}
var script = doc.createElement('script');
script.type = "text/javascript";
script.src = "myscript.js";
document.body.appendChild(script);
</script>

</head>
<body>
<iframe src="http://example.com/test.html" id="myFrame">
</iframe>
</body>
</html>

感谢大家的帮助。

【问题讨论】:

  • 如果您指定的域不是您自己的域,同源策略会阻止您访问 iframe 内容。
  • 不,我无法访问该网站。
  • 那么你就被锁定了 - 设计使然。
  • 解决它的一种方法是将请求代理到 url(包含您尝试显示的内容)并从您的域输出。现在 iframe 将来自您的域。但是,这不是一个好的做法,更不用说您可能会遇到其他安全问题。

标签: javascript html iframe web


【解决方案1】:

不幸的是,我不相信这是可能的。我知道我以前尝试过类似的方法,但出于安全原因,浏览器阻止了它。

【讨论】:

  • 我想这就是原因,为什么那不起作用。但我不确定。
【解决方案2】:

您将脚本附加到父页面的文档,而不是框架页面。

【讨论】:

    【解决方案3】:

    我不确定这是否可以实现,但我看到的一个问题是时机。 你会在加载 iframe 的内容之前运行 javascript 代码,对吧?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2017-08-23
      • 2020-08-26
      相关资源
      最近更新 更多