【问题标题】:How to call parent window function in chrome browser?如何在chrome浏览器中调用父窗口函数?
【发布时间】:2011-02-02 19:09:44
【问题描述】:

嗨, 在 Chrome 浏览器中,我在调用窗口父 javascript 函数时意外地发现了问题。 如果我有一个窗口,其中定义了 javascript 函数

<script type="text/javascript">
  function dolink() {
   . . .
  }
</script>

并且我在该窗口中有一个 iframe,它使用 jquery 进行此调用

<script type="text/javascript">
 $(function() {
      $('a.arglink').click(function() {
         window.parent.dolink($(this).attr('href'));
         return false;
      });
 });
</script>

dolink 函数的调用不起作用。使用 chrome javascript 调试器,window.parent.dolink 似乎是 undefined。这是我设计的还是我犯的错误? 在 Firefox 和 IE 中运行良好。

【问题讨论】:

  • iframe 是否与父文档在同一个域中?

标签: javascript jquery iframe google-chrome


【解决方案1】:

我只是简单地做了这个,它对我有用

在 iframe 中

function sendToParent() {
    parent.doSomething(); 
}
sendToParent();

在父母中

function doSomething() {
    alert('did it!')
}

【讨论】:

    【解决方案2】:

    你应该这样调用代码

    if(function != undefined)
    {
     $(function() {
          $('a.arglink').click(function() {
             window.parent.dolink($(this).attr('href'));
             return false;
          });
     });
    }
    

    【讨论】:

      【解决方案3】:

      终于找到了!

      Chrome 浏览器似乎不允许使用 file: 协议引用访问页面的父窗口。事实上,我在我的机器上使用文件测试了上面的代码,所以使用了像 file:///C:/mytests/mypage.html 这样的 url。如果我将该页面放在 Web 服务器中,一切都会按预期工作。

      【讨论】:

      • chrome也有同样的问题,但是没有使用文件协议,纯http
      • 刚刚测试过,但不起作用 :C // 我想要我的支持
      【解决方案4】:

      如何使用frameElementownerDocument

      <script type="text/javascript">
       $(function() {
            $('a.arglink').click(function() {
               window.frameElement.ownerDocument.parentWindow.dolink($(this).attr('href'));
               return false;
            });
       });
      </script>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-09
        • 2018-09-12
        • 1970-01-01
        • 1970-01-01
        • 2020-07-21
        相关资源
        最近更新 更多