2011-07-21 2 views
0

は、チェイスにカット:はiFrameの内部のテキスト入力(Googleフォーム)にアクセスする - Javascriptを

私はGoogleが調査を形成し、基本的に私は動的にテキストの入力のうちの1つを編集する必要があります。 Javascriptがそれを追加しますので

フォームの調査では、実際には1〜6のうちの可能な調査である: '<iframe name="survey" id="ifrm" src="https://spreadsheets.google.com/spreadsheet/embeddedform?formkey=dHpYM1NvTFN4OElNWnBJWUtjdHhld2c6MQ" width="760" height="623" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>'

トラブルはそのテキストボックスにアクセスしている - 私はiFrameのが正しくロードされるまで待つようにsetTimeout()を使用しました。そして、私はこれをやりたい:

function writeEncoded() { 
     alert("now attempting to inject"); 


     var iF = document.getElementById('ifrm'); 
     alert(iF); 

     //works up to here 
     var form = iF.contentWindow.document; //does not run. 
     alert (form); 
     form.getElementById('entry_3').value = "Hi"; 

    } 

何か問題が起こっている? ありがとうございます。そのそれはjavascriptの階層構造ブラウザに2つの場所に「住む」に

答えて

0

あなたはアクションでSame Origin Policyを見ています。 Web上

、1つのウェブサイト上のコンテンツは、mostly別のコンテンツを操作することはできません。

iframehttps://spreadsheets.google.comからロードされ、Webページが別のWebサイト上にある(私は推測している)ので、(http://example.com/のように)、あなたのJavaScriptがiframeの内側に何を見ることができない(とGoogleのJavaScriptは、あなたに何を見ることができませんウェブページ)。

なぜですか?同じ起源ポリシーはあなたを守るためのものです。それがなければ、google.comを私のウェブサイトのiframeにロードし、JavaScriptであなたのメールアドレスを読んでください(ログインしている場合)。または、私はfacebook.comを読み込み、あなたの名前とかなりの他の個人情報をページから読み出すことができました。

+0

ああ、チップのおかげで。私はちょうどGoogleの調査書をコピーして、自分のサーバー上でhtmlにします。 – Xrave

0

のiframeは珍しいです。 これはフレームの一種であり、それが要素なのでドキュメントツリーの一部でもあるため、window.framesコレクションの一部です。次の行を使用して要素のiframeにアクセスし、それを使って何をしたいのかを行うことができます。文書内の他のインラインフレームが存在しない場合、xが0であると

window.frames[x].document.getelementById('') 

関連する問題