当前位置:  开发笔记 > 编程语言 > 正文

在iframe中调用javascript函数

如何解决《在iframe中调用javascript函数》经验,为你挑选了3个好方法。

iframe在父页面中调用JavaScript函数时遇到问题.这是我的两页:

mainPage.html



    MainPage
    


    MainPage


resultFrame.html



    ResultPage
    


    ResultPage


(我知道document.all不推荐这个,但这个页面只能在内部用IE查看,我不认为这是问题)

当我按下重置按钮时,我得到"找到resultFrame"和"找不到resultFrame.Reset".它似乎有一个框架的引用,但不能调用框架上的功能,为什么会这样?



1> Jonathan Fin..:

使用:

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

访问iframe中的重置功能

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

另请参阅此处 特别是bobince的答案.


嗨乔纳森,.contentWindow还能运作吗?我做`console.log(document.getElementById('iframeID').contentWindow)`并且在Firebug中它正确地在我的iframe中显示我的`test()`函数,但当我去调用函数时它说它不是函数, 但它是!在FF4中测试它.

2> barkmadley..:

不要从文档中获取帧,而是尝试从窗口对象中获取帧.

在上面的例子中改变了这个:

if (typeof (document.all.resultFrame.Reset) == "function")
    document.all.resultFrame.Reset();
else
    alert("resultFrame.Reset NOT found");

if (typeof (window.frames[0].Reset) == "function")
    window.frames[0].Reset();
else
    alert("resultFrame.Reset NOT found");

问题是iframe中的javascript范围不是通过iframe的DOM元素公开的.只有窗口对象包含帧的javascript范围信息.



3> Dominique Fo..:

为了更加健壮:

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();
  ...
}
...

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有