让子 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的主要内容,如果未能解决你的问题,请参考以下文章
页面嵌套iframe时,怎样让iframe高度根据自身内容高度自适应