【问题标题】:How can i call a window child function in javascript?如何在 javascript 中调用窗口子函数?
【发布时间】:2012-12-19 13:20:03
【问题描述】:

我正在从子页面调用像 window.parent.functionname(); 这样的父函数。如何从父页面调用window.child.function() 到子页面。

感谢任何帮助。

【问题讨论】:

  • 我猜你说的是在当前文档的 iFrame 中调用函数。如果是这样,请将其添加到您的问题中。
  • 不,我没有任何 iframe
  • 如果您使用的是 window.parent 并且它正在工作,那么您就有一个 iframe。
  • 它将在标签条中。我正在使用 dhtmlx tabstrip 加载子页面。一些代码:tabbar.setHrefMode("iframes-on-demand"); tabbar.setContentHref("a1", "../../MailContactMain/Index"); 然后我可以使用 a1 id 调用

标签: javascript frames


【解决方案1】:

给你的 iFrame 一个 id 并尝试

document.getElementById("iFrameId").contentWindow.functionname()

即使您在同一页面中有多个 iFrame,无论它们的顺序如何,这仍然有效。

【讨论】:

    【解决方案2】:

    你有 iframe 吗?

    做这样的事情:

    window.frames[0].contentDocument.functionname();
    

    【讨论】:

    • 我没有任何相框。那我该怎么做呢
    • @Naidu 你的孩子在哪里?当您在哪个上下文中制作 window.parent 时?给我更多代码?!
    • 我正在使用 dhtmlx 标签栏来显示孩子。代码:tabbar.setHrefMode("iframes-on-demand"); tabbar.setContentHref("a1", "../../MailContactMain/Index"); 那么我将使用 a1 作为 iframe
    • 哦,我以前从没用过。但必须有一个 iframe 或框架。没有框架的属性 window.parent 是相同的链接只是 window (window.parent == window) => true
    • 如果你在一个框架中,那么 window.parent 就是框架持有者文档。如果您在 frame-holder-document 中,则使用 window.frames[0] 或 window.frames[1] 在框架上下文中切换。看这里:de.selfhtml.org/javascript/objekte/frames.htm
    【解决方案3】:

    父页面

    var windowRef = null;
    
    function openChildWindow() {
        if ((windowRef != null) && (windowRef.closed == false)) {
            if (windowRef.closed == false) windowRef.close();
            windowRef = null;
        }
    
        var windowUrl = 'ChildPage.aspx';
        var windowId = 'NewWindow_' + new Date().getTime();
        var windowFeatures = 'channelmode=no,directories=no,fullscreen=no,' + 'location=no,dependent=yes,menubar=no,resizable=no,scrollbars=yes,' + 'status=no,toolbar=no,titlebar=no,' + 'left=0,top=0,width=400px,height=200px';
    
        windowRef = window.open(windowUrl, windowId, windowFeatures);
    
        windowRef.focus();
    
        // Need to call on a delay to allow
        // the child window to fully load...
        window.setTimeout(callChildWindowFunction(), 1000);
    }
    
    function callChildWindowFunction() {
        if ((windowRef != null) && (windowRef.closed == false)) windowRef.childWindowFunction();
    }​
    

    子页面

    function childWindowFunction() {
        alert('Hello from childWindowFunction()');
    }​
    

    【讨论】:

      【解决方案4】:
      var win = null;
      function openAndCall(id){
          if (win!=null && win.closed==false){
              win.close();
          }
          win = window.open("/somePage");
          win.onload = function(){
              win.callSome(id);
          };
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-15
        • 2017-11-09
        • 1970-01-01
        • 2013-10-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多