为了账号安全,请及时绑定邮箱和手机立即绑定

在iframe中调用JavaScript函数

在iframe中调用JavaScript函数

白猪掌柜的 2019-12-26 10:45:35
我在iframe从父页面调用JavaScript函数时遇到问题。这是我的两页:mainPage.html<html><head>    <title>MainPage</title>    <script type="text/javascript">        function Reset()         {            if (document.all.resultFrame)                alert("resultFrame found");            else                alert("resultFrame NOT found");            if (typeof (document.all.resultFrame.Reset) == "function")                document.all.resultFrame.Reset();            else                alert("resultFrame.Reset NOT found");        }    </script></head><body>    MainPage<br>    <input type="button" onclick="Reset()" value="Reset"><br><br>    <iframe height="100" id="resultFrame" src="resultFrame.html"></iframe></body></html>resultFrame.html<html><head>    <title>ResultPage</title>    <script type="text/javascript">        function Reset()         {            alert("reset (in resultframe)");        }    </script></head><body>    ResultPage</body></html>(我知道document.all不建议这样做,但只能在内部使用IE浏览此页面,我不认为这是问题所在)当我按下“重置”按钮时,我得到“找到resultFrame”和“找不到resultFrame.Reset”。似乎有对框架的引用,但是无法在框架上调用函数,为什么呢?
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

采用:


document.getElementById("resultFrame").contentWindow.Reset();

访问iframe中的重置功能


document.getElementById("resultFrame") 将在您的代码中获取iframe,并在iframe中contentWindow获取window对象。拥有子窗口后,您可以在该上下文中引用javascript。



查看完整回答
反对 回复 2019-12-26
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

为了更强大:


function getIframeWindow(iframe_object) {

  var doc;


  if (iframe_object.contentWindow) {

    return iframe_object.contentWindow;

  }


  if (iframe_object.window) {

    return iframe_object.window;

  } 


  if (!doc && iframe_object.contentDocument) {

    doc = iframe_object.contentDocument;

  } 


  if (!doc && iframe_object.document) {

    doc = iframe_object.document;

  }


  if (doc && doc.defaultView) {

   return doc.defaultView;

  }


  if (doc && doc.parentWindow) {

    return doc.parentWindow;

  }


  return undefined;

}


...

var el = document.getElementById('targetFrame');


var frame_win = getIframeWindow(el);


if (frame_win) {

  frame_win.reset();

  ...

}

...


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 570 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信