Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在同一域的iframe中调用函数,支持Internet Explorer_Javascript_Internet Explorer_Iframe - Fatal编程技术网

Javascript 在同一域的iframe中调用函数,支持Internet Explorer

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上工作 我

我在父页面上有一个触发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”)。单击(); } 和标签:


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

父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中测试

问题在于这是一个提交事件。警报事件一直持续到最初发布几周后的更新。我正在当前的工作环境中进行编辑,从那时起就一直有效。在这里两个月没有回复之后,我已经忘记了这篇帖子。