我正在尝试对greasemonkey用户进行一些修改以实现我需要的功能。代码就像
showAddress:function(addrString,type)
{
this.addrBox=$('<div id="batchPublish"></div>')
.append('<div id="batchHeader"></div>')
.append('<div id="batchContent" style="float:left;clear:both"></div>');
.........
var batchContent=this.addrBox.find('#batchContent')
.append('<pre width="300" style="text-align:left" id="batchedlink"></pre>');
this.addrBox.find('#batchedlink').css({'width':'500px','height':'250px','overflow':'auto','word-wrap': 'break-word'})
.append(addrString);
$.blockUI({message:this.addrBox,css:{width:"520px",height:"300px"}}); }
基本上这段代码将数据写入html。我想要实现的是将“addrString”写入嵌入的iframe。现在它在“预”标签中。我尝试了很多方法,但仍然没有运气。 Iframe总是空的。 我完全是javascript的新手,不清楚这是否可行。
感谢您的帮助。
答案 0 :(得分:4)
由于您要在同一个域中添加iFrame,因此您可以像这样操作其内容:
(See it in action at jsBin.)
$("#batchContent").append ('<iframe id="batchedlink"></iframe>');
/*--- Compensate for a bug in IE and FF, Dynamically added iFrame needs
some time to become "DOM-able".
*/
setTimeout ( function () {
var iframeBody = $("#batchedlink").contents ().find ("body");
iframeBody.append (addrString);
},
333
);
注意:强>
对于Chrome用户,您显然不需要定时器延迟。但是对于FF和IE 8(我仔细检查过的其他2个浏览器),添加动态的iFrame直到它已经解决了#34;之后才能被操作。由于某些原因。这个似乎需要大约200毫秒。
静态加载的iFrame没有这种延迟,请参阅jsBin演示。
答案 1 :(得分:0)
很难确切地说出你在问什么 - 但如果你想知道你是否可以将DOM元素附加到iFrame,答案就是“不”。