在主干网中使用iframe实体作为区域
Using iframe body as Region in Backbone Marionette
我正试图在Backbone Marionette中使用iframe的主体作为Region。Marionette使用标准的jquery选择器来定义哪个元素是区域,如下所示:
App.addRegions( { main: "#main-region" } );
我希望我的区域是iframe的主体,通常我会发现它是这样的:
$('iframe').contents().find('body');
当试图把上面作为区域时,像这样:
App.addRegions( { main: $('iframe').contents().find('body') } );
引发以下错误:
Uncaught Error: Syntax error, unrecognized expression: iframe.contents() body
Sizzle.error jquery.js?body=1:4681
tokenize jquery.js?body=1:4742
select jquery.js?body=1:5114
我试着直接把选择器放进去:
App.addRegions( { main: "iframe.contents() body" } );
但它给了我完全相同的错误。
编辑:
还试图为它创建一个psuedo选择器:
$.expr[":"].contents = $.expr.createPseudo(function(selector) {
return function(el) {
var $el;
$el = $(el);
console.log($el.contents().find(selector));
return $($el.contents().find(selector));
};
});
// Usage: $('iframe:contents body');
它确实在函数本身中记录iframe的主体:
[body, prevObject: jQuery.fn.jQuery.init[1], context: iframe, selector: ".contents() body", constructor: function, init: function…]
但最终以某种方式返回iframe元素:
[iframe, prevObject: jQuery.fn.jQuery.init[1], context: document, selector: "iframe:contents(body)", constructor: function, init: function…]
所以,我需要的是一个选择器,它能够获得iframe的身体或其他可以与Marionette一起工作的东西。
有办法做到这一点吗?
不确定您是否已经找到了这个解决方案的答案,但您可以通过自己创建区域而不是依赖Marionette的内置选择器行为来轻松实现这一点:
1) 首先,您需要创建一个新的Region
,并传入一个DOM元素作为el
选项:
var iframeRegion = new Backbone.Marionette.Region({
// Make sure you get the DOM object out of the jQuery object (eg. the .get() call)
el: $('iframe').contents().find('body').get(0)
});
2) 然后将实例添加到您的应用程序中,而不是使用选择器字符串:
App.addRegions({
main: iframeRegion
});
相关文章:
- onkeyup无法动态创建多个文本区域
- FabricJs-限制主对象内添加对象的移动区域
- 具有所有样式的文本正在复制到可编辑文本区域
- 如何为高图中的区域线创建z索引
- 在文本区域POST后解码JSON
- 在文本区域中使用jQuery.text()保持换行符
- ng在下拉列表和文本区域提交
- 使用fabric.js从矩形区域获取对象,并将该区域绘制到画布上
- 当用户按下回车键时,自动在text区域/text中插入消息
- 将文本插入光标所在的文本区域
- 离开页面导航后保留文本区域内容
- 不能在图像中的地图标记中使用花式框jquery插件的区域标记
- Javascript-在文本区域中断,但不在段落中中断
- 微风得到的是实体而不是对象的集合
- 当选择值x时,Javascript需要在正确的位置显示文本区域,从而循环通过具有选择选项的表单
- 测试文本区域中的特定文本格式
- 画布中绘制的矩形区域的弹出工具提示
- 文本编辑后,append函数不适用于文本区域
- 在主干网中使用iframe实体作为区域
- 如何检查craftyjs实体是否掉出了crafty区域