【问题标题】:How to call a function in an iframe from the parent page?如何从父页面调用 iframe 中的函数?
【发布时间】:2010-11-09 09:59:54
【问题描述】:

如何从父页面调用 iframe 中的函数?

【问题讨论】:

标签: jquery


【解决方案1】:

只要框架页面位于同一域(或子域,并且您正在设置 document.domain),您就需要访问框架元素的 contentWindow 属性.例如:

$("#myFrame")[0].contentWindow.myFunction();

// or, if jQuery hasn't made you lazy 
document.getElementById("myFrame").contentWindow.myFunction();

大多数浏览器也支持 contentDocument,但 Internet Explorer 不支持。如果您的框架页面位于不同的域中,那么您将收到拒绝访问错误。

【讨论】:

  • 我建议非懒惰的等价物真的if(document.getElementById("myFrame").length==0){ document.getElementById("myFrame").contentWindow.myFunction(); };
  • @Jeromy:不,如果同一页面中不存在#myFrame,两个版本都会抛出相同的错误。
  • 我明白你的意思了...$("#myFrame")[0] 返回undefined,当然没有方法。我在想$("#myFrame")...,但这不是它的工作原理。感谢您让我走上正确的道路。
  • 这应该被接受为答案。我喜欢懒惰的版本;)
【解决方案2】:
$("iframe").each(function()
{
    $(this).one("load", function()
    {
        $(this)[0].contentWindow.myFunction();
    });
});

需要加载 iframe ;)

【讨论】:

    【解决方案3】:

    像专业人士一样做:

    $("#myFrame").prop('contentWindow').abc();
    

    【讨论】:

      【解决方案4】:

      你试过了吗?

      top.frames['my_frame'].myFunc();
      

      【讨论】:

      • 是javascript,不需要jquery
      【解决方案5】:

      您可以使用 iFrame 的 id 选择 iFrame

      document.getElementById(iframeId).contentDocument
      

      但我不确定你是否可以访问它的 JavaScript, 特别是如果子 iFrame 来自不同的域

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-16
        • 2013-10-14
        • 2010-09-20
        • 2013-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多