gpt4 book ai didi

javascript - 在 Backbone Marionette 中使用 iframe 主体作为区域

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:43:48 24 4
gpt4 key购买 nike

我正在尝试将 iframe 的主体用作 Backbone Marionette 中的区域。 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" } );

但它给了我完全相同的错误。


编辑:

还尝试为它创建一个伪选择器:

$.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
});

关于javascript - 在 Backbone Marionette 中使用 iframe 主体作为区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26298347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com