让子 iframe 引用自身,而不是父 iframe

Posted

技术标签:

【中文标题】让子 iframe 引用自身,而不是父 iframe【英文标题】:Have the child iframe reference itself, not the parent iframe 【发布时间】:2015-02-26 05:16:43 【问题描述】:

我拥有的是这样的嵌套 iframe

<iframe id="is Static">
   stuff
  <iframe id="Is Dynmic>
     <html>...</html>
     <body id="This is thebody"> other stuff </body>

我有这段代码可以监听主体的鼠标向上事件,用于检测何时选择了文本。我绑定事件监听器的方式是这样的

 $(window).load(function() 
        var listOfEditor = editorIds.split(",");
        for (var i = 0; i < listOfEditor.length; i++) 
            var currentFrame = $("#" + listOfEditor[i] + "_ifr");              
            if (currentFrame.exists())                  
                currentFrame.contents().find("body").each(function ()                             
                        $(this).on("mouseup", function () 
                           console.log(window.frameElement.contentWindow.getSelection());
                            console.log(window.frames);
                            console.log(window.parent);
                            console.log($(this).parent("iframe");
                        );
                    
                );
                           
        ;

从上面可以看到,我有一个 ID 列表。 Id 名称对应于页面上的各种 iframe,并使用该列表找到每个 iframe 的主体并绑定事件侦听器以获取选定的文本,具体取决于哪个 iframe 具有选定的文本。我遇到的问题是使用window 对象让我获得了具有静态名称的父iframe,但我想要的是对包含body 元素的内部iframe 的引用。完整的代码如下所示

<iframe id="is Static">      
<script>
 $(window).load(function() 
        var listOfEditor = editorIds.split(",");
        for (var i = 0; i < listOfEditor.length; i++) 
            var currentFrame = $("#" + listOfEditor[i] + "_ifr");              
            if (currentFrame.exists())                  
                currentFrame.contents().find("body").each(function ()                             
                        $(this).on("mouseup", function () 
                           console.log(window.frameElement.contentWindow.getSelection());
                            console.log(window.frames);
                            console.log(window.parent);
                            console.log($(this).parent("iframe");
                        );
                    
                );
                           
        ;
</script>
stuff
  <iframe id="Is Dynmic>
     <html>...</html>
     <body id="This is thebody"> other stuff </body>

$(window).load 是从父 Iframe 级别执行的。我见过各种问题,但它们是关于从子 iframe 中访问父 iframe,或访问子 iframe 中的元素。

【问题讨论】:

【参考方案1】:

我找到了。由于我有指向正文的指针,我可以使用ownerDocument 属性来获取父文档。

【讨论】:

以上是关于让子 iframe 引用自身,而不是父 iframe的主要内容,如果未能解决你的问题,请参考以下文章

Jquery:怎样让子窗体的div显示在父窗体之上

页面嵌套iframe时,怎样让iframe高度根据自身内容高度自适应

控制 iframe 视为 window.top 的内容?

window.top

div中镶嵌一个iframe,怎么让iframe的滚动条不起作用,而div的滚动条起作用

如何在从父窗口创建的 iframe 的 onload 处理程序中获取对 iframe 窗口对象的引用