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

时间:2014-12-30 02:03:56

标签: javascript jquery html iframe

我所拥有的是像这样的嵌套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的主体并绑定事件侦听器以获取所选文本depedning 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>

从父Iframe级别执行$(window).load的位置。我已经看到了各种问题,但它们是关于从子iframe中访问父iframe,或访问子iframe中的元素。

1 个答案:

答案 0 :(得分:0)

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