Javascript 整个html文档的主干js视图
我想在iframe中为html文档创建一个视图。例如:Javascript 整个html文档的主干js视图,javascript,jquery,html,iframe,backbone.js,Javascript,Jquery,Html,Iframe,Backbone.js,我想在iframe中为html文档创建一个视图。例如: <div id="some"> <iframe id="other" /> </div> 然后,当我这样做时: var iframe = $('#other')[0].contentWindow.document; iframeDocument.open(); iframeDocument.write(projectView.render().el); iframeDocument.close(
<div id="some">
<iframe id="other" />
</div>
然后,当我这样做时:
var iframe = $('#other')[0].contentWindow.document;
iframeDocument.open();
iframeDocument.write(projectView.render().el);
iframeDocument.close();
它不起作用。我尝试了很多不同的组合,但没有成功。如果我将document.write()与静态html结合使用,效果会很好,但如何处理主干视图和动态内容?我认为您的方法过于复杂,使用主干并没有给您带来任何好处。你为什么不用模型的
content
URL设置iframe
ssrc
属性,然后使用它呢
render: function()
{
this.$el.attr('src', this.model.url()); //Or whatever you need to get the right URL
return this;
}
“el”属性是对HTML对象的引用。您正在将其传递到document.write()调用中,而该函数实际上需要一个HTML字符串。这就是为什么静态HTML适用于您
所以你可能想做这样的事情:
var projectView = Backbone.View.extend(
{
tagName: 'html',
initialize: function()
{
this.model.bind('sync', this.render, this);
},
render: function()
{
this.$el.html(this.model.get('content')); // content is from model, and it
//receives the html document from server
return this;
}
});
iframeDocument.open();
iframeDocument.write(projectView.render().el.innerHTML);
iframeDocument.close();
没有理由使用iframe 您只需将iframe替换为div,它将在每次触发同步事件时呈现 您还可以对事件使用
on
而不是bind
var projectView = Backbone.View.extend(
{
tagName: 'div',
initialize: function()
{
this.model.on('sync', this.render, this);
},
render: function()
{
this.$el.html(this.model.get('content')); // content is from model, and it
//receives the html document from server
return this;
}
});
然后将视图放入一个容器中
$('#some').html(projectView.el);
在调用
write
之前,您可能需要从模型中删除一些不必要的内容(即
标记),只要它同步projectView.render().el的值是多少?它是一个JavaScript对象:[Object htmliframelement]。如果我把内容放在div中,它就是完全正常的html文档。但对iframe不起作用。在浏览器控制台中,它似乎是html文档。。。我尝试使用这种方法是因为iframe的内容在数据库中。整个html文档位于数据库中。在我获取内容之后,我会动态地更改它,然后我想再次保存它。你可能是对的,这可能不是最好的方法。我仍在试图弄清楚是应该过滤文档(删除一些标记)并将其嵌入到div中,还是将其完全加载到iframe中。src方法对我不起作用,毕竟,我会动态地更改文档的内容。是的,但是为什么不在iframe文档中这样做呢?这样也可以避免恼人的跨来源限制。您的意思是框架文档本身会改变吗?六羟甲基三聚氰胺六甲醚。。。这是个好主意。另一方面,在触发基本文档上的事件时,必须应用更改。无论如何,我会考虑的。谢谢我会尝试你的建议,但我仍然不相信div方法足够干净。我可能错了,但我必须自己试一试。对不起,实际上它不起作用。我仍然无法从el获取html。