gpt4 book ai didi

Iframe 中的 Javascript 未执行

转载 作者:行者123 更新时间:2023-11-28 16:06:07 28 4
gpt4 key购买 nike

我对 javascript 有点菜鸟,所以请帮助我。我的 body 标签底部有这个:

<iframe id="scriptFrame" name="scriptFrame" height="0" width="0">
<script type="text/javascript" language="javascript">
alert("Hello World");
parent.alert("Hello world");
function foo()
{
alert("Hello World");
}
</script>
</iframe>

两个警报都不会弹出。我究竟做错了什么?我尝试添加 html 和 head 标签,但这没有帮助。我也尝试过 document.getElementById('scriptFrame').contentWindow.foo() 和frames['scriptFrame'].foo() 但都不起作用

最佳答案

请注意,您不能将任何内容直接添加到 <iframe> 中标签。即使使用 JavaScript,仅当 iframe 中的页面与父页面来自同一域时,您才可以添加内容。因此,您必须执行以下操作:

<html>
<body>
<script >
function foo()
{
alert("Hello World");
}
</script>
<iframe id="scriptFrame" onload="foo()"name="scriptFrame" height="0" width="0">
</iframe>
</body>
</html>

从 iframe 调用父 JS 函数是可能的,但前提是父级和 iframe 中加载的页面都来自同一域,即 abc.com,并且两者都使用相同的协议(protocol),即两者都在 http://或 https://上。

在以下情况下调用将失败:

  1. 父页面和 iframe 页面来自不同的域。

  2. 他们使用不同的协议(protocol),一个在 http://上,另一个在 https://上。

任何解决此限制的方法都是极其不安全的。

例如,假设我注册了域名 superwiningcontest.com 并发送了指向人们电子邮件的链接。当他们加载主页时,我可以在那里隐藏一些 iframe 并阅读他们的 Facebook feed,检查最近的 Amazon 或 PayPal 交易,或者(如果他们使用的服务没有实现足够的安全性)将资金从他们的帐户中转出。账户。这就是为什么 JavaScript 仅限于同域和同协议(protocol)。

关于Iframe 中的 Javascript 未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14877809/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com