4

javascript (ブックマークレット) 経由: iframe を作成し、それにフォームを追加してから、フォームを送信するスクリプトを追加する必要があります。

以下は Chrome では機能しますが、IE では機能しません。

var i = document.createElement('iframe'); // also give it id = iframe_id
var frm = document.createElement('form');  // also add inputs and values
var s = document.createElement('script'); // also add innerHTML that submits form 

document.body.appendChild(i);
window.frames['iframe_id'].document.getElementsByTagName('body')[0].appendChild(frm);
window.frames['iframe_id'].document.getElementsByTagName('body')[0].appendChild(s);

IE で次のエラーが表示されます: Unable to get property 'appendChild' of undefined or null reference

iframe をドキュメントに追加する前に、フォームとスクリプトを iframe に追加しようとしました。

 i.appendChild(frm);
 i.appendChild(s);
 document.body.appendChild(i);

Chrome で奇妙な応答が返されます。フォーム送信からの応答は、ブロックされたポップアップに表示されます (まったく表示されないのではなく)。IE では、何も起こらないようです。

4

2 に答える 2

7

write()最初に使用してドキュメントに直接書き込むことをお勧めします。

デモ: http://jsfiddle.net/QjPuZ/1/

コード:

var iframeDoc = i.contentDocument || i.contentWindow.document;

iframeDoc.open();
iframeDoc.write("<html><body></body></html>");
iframeDoc.close();

iframeBody = iframeDoc.body;
var frm = iframeDoc.createElement('form');
var s = iframeDoc.createElement('script');
iframeBody.appendChild(frm);
iframeBody.appendChild(s);
于 2013-07-17T11:38:24.130 に答える