2017-10-06 8 views
0

私はAPI.AIチャットボットを作成し、HTMLファイルに「Webデモ」統合を使用しました.API.AIに埋め込まれたiframeを教えてくれました。 :クロスドメインAPI.AI iframe要素にアクセスする方法

<iframe id="ifrm" width="350" height="430" src="https://console.api.ai/api-client/demo/embedded/...."></iframe> 

私はHTMLファイルで使用しました。

ここではの中にある<input>タグのテキストを取得したいと考えています。

<input type="text" name="q" id="query" placeholder="Ask something..."> 

これを得るにはさまざまな方法を試しました。<input>たとえば、

$('#ifrm').contents().find("#query") 

ですが、結果は"undefined"です。 誰かがこの入力タグのテキストをHTMLファイルに入れるために何をすべきか知っていますか? IFRAMEとあなたのページが同じドメイン下にない場合は、事前

答えて

0

おかげで、Webブラウザはインラインフレームにあなたを許しません。あなたはIFRAMEへの参照をつかむ、

var iframe = document.getElementById("your_iframe_id"); 
var iframe_contents = iframe.contentDocument.body.innerHTML; 
var textbox = iframe_contents.getElementById("input_id"); 

まず:しかし、2つが同じドメインの下にある場合は、次のような何かを試すことができます。 iframeにはというプロパティがあり、これはすべてのhtmlデータを保持するdocumentです。そこからあなたの入力を得ることができます。

編集

のiframeと対話しようとしているページには、同じドメイン下にない場合は、ブラウザを使用すると、対話することができません。これはセキュリティ上の理由によるものです。 Webページを私の中に埋め込んで同じに見えるようにして、キープレスなどを監視するためにいくつかのコードを入力するだけで問題が起こる可能性があると考えてください。

Javascriptからコンテンツにアクセスするためのすべてのルールを定義するルールセットは、same-origin policyと呼ばれます。

+0

ありがとう、私のhtmlファイルはありませんが、同じdomain.iframeはAPI.AIドメインの下にありません。だから私はあなたの上記のコードを使用してこのエラーがある:TypeError:iframe.contentDocumentはnullです。異なるドメインでこの作業を行う方法はありますか? – sun

+0

セキュリティ上の理由から、それを説明するために私の答えを更新します。 – Lite20

関連する問題