重用iframe中的jQuery对象
Reuse jQuery object from an iframe?
我有一个WYSIWYG
应用程序,它使用iframe
将div
转换为编辑器。应用程序内部使用jQuery
和jQuery UI
作为其核心库。为了扩展应用程序的功能,我考虑使用jQuery
和jQuery UI
,这在我的父级DOM
中是不可用的
我有两种选择
在我的父DOM
中加载库。从iframe
本身获取库,并开始扩展应用程序,即jQuery = window.frames[0].jQuery
。
后者使我免于将其加载到父DOM
,但我遇到了一个问题,对话框选择菜单无法按预期工作。它根本没有显示选项。代码类似于:
// Here I chose both jQuery from parent and
// jQuery = window.frames[0].jQuery
div = jQuery("<div id="dialog" title="Dialog"></div>")
div.append("<select><option>Foo</option>Bar<option></option></select>")
jQuery("body").append(div)
div.dialog{appendTo:editorID} //Editor is in iframe
有人知道当你做这个jQuery = window.frames[0].jQuery
时会发生什么吗?这个jQuery对象会一直操作iframe DOM而不是父DOM吗?或者jQuery在使用新DOM时会正常工作吗。
只要:,就可以将内容从iframe复制到父页
父页面(承载iframe的页面)和子页面(位于iframe内的页面)都符合相同的原始策略:
两个页面必须匹配:
- 协议(例如
http:
和https:
将失败)- 子域(例如
http://app.domain.com
和http://www.domain.com
失败)*- 域(不用说
apples.com
和oranges.org
失败)- 端口(例如
https://www.generic.com:8080
和https://www.generic.com:8088
发生故障)
*有办法绕过这个
在我的脑海中,我知道两种传输节点的JavaScript方法:
document.importNode()
份document.adoptNode()
移动
外部文档中的节点应使用
document.importNode()
进行克隆(或使用document.adoptNode()
进行采用),然后才能插入到当前文档中。当从外部文档克隆到当前文档时,不鼓励使用node.cloneNode()
。
第一个演示在iframe加载后使用importNode()
将外部页面的主体复制到iframe中,并将其附加到<section>
(可以使用任何块元素)。
第二个演示在点击事件中使用importNode()
。要查看结果,请单击按钮,然后向下滚动。
注意:此过程也适用于<script>
块。
http://plnkr.co/edit/yUW2CYqDqrvEq5fT1ty6?p=preview
JavaScript
iFrame1.onload = function() {
bodySnatcher('#iFrame1', '#display');
}
var btn1 = document.getElementById('btn1');
btn1.addEventListener('click', function() {
bodySnatcher('#iFrame2', '#display');
}, false);
function bodySnatcher(iframe, parent) {
var iFrame = document.querySelector(iframe);
var iBody = iFrame.contentWindow.document.getElementsByTagName("body")[0];
var imported = document.importNode(iBody, true);
document.querySelector(parent).appendChild(imported);
}
$(selector)
在文档内部隐式搜索,而是可以使用$(document).find(selector)
。
jQuery = $(window).parents().frames[0].jQuery
//parent()
- 如何删除对象数组中的对象:jquery
- 为一个声音元素数组创建一个音频对象jquery,javascript
- 在原型对象 jquery 上将一个按钮与另一个按钮不同
- 编辑对象 jQuery 的属性
- ajax 正在用多个调用覆盖 XHR 对象 - jQuery
- 传递值并将其显示为对象 - jquery
- 如何将变量名转换为对象jQuery的索引字符串
- 访问多个动态对象 jQuery
- 使用OptGroup从两个分离的JSon对象JQuery填充Select
- 显示对象jquery中的数据
- 清空Javascript对象(Jquery Mobile)
- null不是对象-jQuery+传单
- 当事件是由单元格中的对象jQuery引起时,如何更改该单元格的自定义属性
- 未捕获类型错误:Property '$'对象- jQuery
- 从数组对象Jquery中移除对象
- 将属性值转换为对象(jquery或javascript)
- 不知道如何排序这个JSON对象jQuery/JavaScript
- 解析和字符串化json对象jquery
- 插入对象(jquery)延迟
- HTML ' img '标签不能在对象jquery中显示为图像