Javascript 在同一域的iframe中调用函数,支持Internet Explorer
我在父页面上有一个触发javascript函数的事件,该函数反过来调用子iframe上的另一个函数。这两个页面都在同一个域中,我通过让javascript同时在两个页面中显示document.domain来验证这一点 这是多年来行之有效的方法,类似的主题也提出了这一点: 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版都扩展了这一功能,从而击败了黑客的解决方法,所以我又回到了死胡同 EDIT3:我已经忘记了这件事,直到将近一年后有人发帖。这就是我最终的解决方法: 父级调用iframename.badscripthack(); iframe中的子对象具有以下功能: 函数badscripthack() { document.getElementById(“OffscreenTextField”).focus(); } 函数submitthis() { document.getElementById(“SubmitButton”)。单击(); } 和标签:Javascript 在同一域的iframe中调用函数,支持Internet Explorer,javascript,internet-explorer,iframe,Javascript,Internet Explorer,Iframe,我在父页面上有一个触发javascript函数的事件,该函数反过来调用子iframe上的另一个函数。这两个页面都在同一个域中,我通过让javascript同时在两个页面中显示document.domain来验证这一点 这是多年来行之有效的方法,类似的主题也提出了这一点: frames[“iframeID”].somefunction(); 已停止使用Internet Explorer版本8.0.7600.16385 它在Internet Explorer版本8.0.6001.18702上工作 我
顾名思义,这是一个糟糕的黑客行为,但它是必要的。当然,它没有回答“正确”的处理方式。从那以后,它就开始工作了,没有人会“后退”意外触发它(如果他们这样做了,结果只是提前保存了一个表单) 父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>
<html>
<head>
<script type="text/javascript">
function Show()
{
alert("Called");
}
</script>
</head>
函数CallFrame()
{
var frame=document.getElementById(“myframe”);
如果(帧)
{
frame.contentWindow.Show();
}
}
我是父母
Frame.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>
<html>
<head>
<script type="text/javascript">
function Show()
{
alert("Called");
}
</script>
</head>
函数Show()
{
警报(“被呼叫”);
}
我是IFrame
在FireFox和IE8中测试问题在于这是一个提交事件。警报事件一直持续到最初发布几周后的更新。我正在当前的工作环境中进行编辑,从那时起就一直有效。在这里两个月没有回复之后,我已经忘记了这篇帖子。