Javascript 创建一个iframe,然后使用jQuery将数据附加到它

Javascript 创建一个iframe,然后使用jQuery将数据附加到它,javascript,jquery,iframe,userscripts,Javascript,Jquery,Iframe,Userscripts,我正在尝试对greasemonkey用户脚本进行一些修改,以实现我需要的功能。代码如下 showAddress:function(addrString,type) { this.addrBox=$('<div id="batchPublish"></div>') .append('<div id="batchHeader"></div>') .append('<div id="batchCont

我正在尝试对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"}}); }
showAddress:函数(addrString,类型)
{
this.addrBox=$(“”)
.append(“”)
.附加(“”);
.........
var batchContent=this.addrBox.find(“#batchContent”)
.附加(“”);
this.addrBox.find('#batchedlink').css({'width':'500px','height':'250px','overflow':'auto','word-wrap':'break-word'})
.append(addrString);
$.blockUI({message:this.addrBox,css:{宽度:“520px”,高度:“300px”}});}
基本上,这段代码将数据写入html。我想要实现的是将“addrString”写入嵌入的iframe。现在它在“pre”标签中。我尝试了很多方法,但仍然没有成功。Iframe总是空的。 我完全是javascript的新手,不清楚这是否可行


谢谢你的帮助。

很难准确地说出你在问什么——但是如果你想知道是否可以将DOM元素附加到iFrame,答案是“否”。

很难准确地说出你在问什么——但是如果你想知道是否可以将DOM元素附加到iFrame,答案是“否”.

由于您要在同一域中添加iFrame,因此可以如下操作其内容:
()

$(“#batchContent”).append(“”);
/*---补偿IE和FF中的缺陷,动态添加iFrame需求
是时候变得“能干”了。
*/
setTimeout(函数(){
var iframeBody=$(“#batchedlink”).contents().find(“body”);
iframeBody.append(addrString);
},
333
);
注意:
对于Chrome用户脚本,显然不需要计时器延迟。但对于FF和IE8(我仔细检查过的另外两种浏览器),动态添加的iFrame在出于某种原因“稳定”之后才可操作。这似乎需要200毫秒


静态加载的iFrame没有这种延迟,请参阅jsBin演示。

因为您要在同一个域中添加iFrame,那么您可以像这样操作其内容:
()

$(“#batchContent”).append(“”);
/*---补偿IE和FF中的缺陷,动态添加iFrame需求
是时候变得“能干”了。
*/
setTimeout(函数(){
var iframeBody=$(“#batchedlink”).contents().find(“body”);
iframeBody.append(addrString);
},
333
);
注意:
对于Chrome用户脚本,显然不需要计时器延迟。但对于FF和IE8(我仔细检查过的另外两种浏览器),动态添加的iFrame在出于某种原因“稳定”之后才可操作。这似乎需要200毫秒


静态加载的iFrame没有这种延迟,请参阅jsBin演示。

OMG,这是我生命中的黑客,但谢谢你的回答+1mg,这是我生命中的黑客,但谢谢你的回答+1.
$("#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
);