2011-12-06 16 views
1

greasemonkey userscriptにいくつかの修正を加えて、必要な機能を実装しようとしています。コードは次のとおりですiframeを作成してjQueryでデータを追加します

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に書き込みます。私が実装したいのは、埋め込まれたiframeに "addrString"を書き込むことです。今は "pre"タグに入っています。私は多くのアプローチを試みましたが、まだ運がありません。 Iframeは常に空でした。 私は完全にjavascriptの初心者であり、これが可能かどうかは不明です。

ありがとうございました。

答えて

4

、あなたはこのようにその内容を操作することができます
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 
); 

注:クロームuserscriptについては
、あなた明らかにドンタイマーの遅延が必要です。しかし、FFとIE 8(ダブルチェックした他の2つのブラウザ)では、を動的に追加しました.iFrameは何らかの理由で "決着"するまで操作できません。このは、約200mSとなるようにと思われます。

静的にロードされたiFrameにはこの遅延がありません.jsBinのデモを参照してください。

+0

ありがとうございました!それは動作します。 –

+0

あなたは大歓迎です。助けてうれしい! –

+0

OMG、これは私の人生のハックリスト******* ********ですが、あなたの答えに感謝します! +1 – dezman

0

あなたが尋ねていることを正確に伝えるのは難しいですが、DOM要素をiFrameに追加できるかどうかを知りたい場合は、答えは「いいえ」です。あなたは、同じドメイン内のiFrameを追加しているので

関連する問題