gpt4 book ai didi

javascript - 同域iframe调用功能,支持Internet Explorer

转载 作者:行者123 更新时间:2023-11-29 15:52:36 27 4
gpt4 key购买 nike

我在父页面上有一个触发 javascript 函数的事件,该函数又调用子 iframe 上的另一个函数。这两个页面都在同一个域中,我已经通过让 javascript 在两个页面中同时显示 document.domain 来验证这一点。

这是多年来一直有效的方法,并在类似主题中得到建议: windows.frames["iframeID"].somefunction();停止使用 Internet Explorer 版本 8.0.7600.16385它确实适用于 Internet Explorer 版本 8.0.6001.18702

我尝试用其中的每一个替换它,结果是一样的: iframeName.somefunction(); document.frames("iframeName").somefunction(); top.frames[0].somefunction();

给出的错误是“访问被拒绝”并引用了 somefunction() 中的第一位代码,但是,如果在 iframe 本身中调用,somefunction() 工作正常。

是否有一种新的“正确”方式从父级调用 iframe 中的函数?代码端是否有解决方法(我无法控制用户的浏览器)?

编辑:这是内部函数: 函数 somefunction() { somebutton.click(); }相反,如果我使用“alert('something');”,它可以正常工作。

EDIT2:较新的版本,以及 IE9 的 Beta 已经扩展了这个,以也击败了 hacky 解决方法,所以我又回到了死在水中。

EDIT3:我已经忘记了这一点,直到将近一年后有人发帖。这是我最终得到的解决方法:

父级调用 iframename.badscripthack();iframe 中的子项具有以下功能:函数 badscripthack(){ document.getElementById("OffscreenTextField").focus();}函数 submitthis(){ document.getElementById("提交按钮").click();}和标签:

顾名思义,这是一个糟糕的黑客攻击,但这是必要的。当然,它并没有回答“正确”的处理方式。从那以后它就开始工作了,没有人“返回制表符”意外触发它(如果他们这样做了,后果只是提前保存了一个表格)。

最佳答案

父 Html

<html>
<head>
<script type="text/javascript">
function CallFrame()
{
var frame = document.getElementById("myframe");
if(frame)
{
frame.contentWindow.Show();
}
}
</script>
</head>
<body>
<h1> I am Parent </h1>
<input type="button" onclick="CallFrame()" value="Call Frame function" /><br/>
<iframe id="myframe" src="Frame.html" />
</body>
</html>

Frame.Html

<html>
<head>
<script type="text/javascript">
function Show()
{
alert("Called");
}
</script>
</head>

<h1> I am IFrame</h1>
<input type="button" onclick="Show();" value="Call Own function">
</body>
</html>

在 FireFox 和 IE8 中测试

关于javascript - 同域iframe调用功能,支持Internet Explorer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3613250/

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