iFrame を含む html ページがあり、そこからいくつかの変数を読み取りたいと考えています。その基本的には、緯度と経度の値を取得したい地図です。
私は Adobe AIR で作業しており、innerHTML、contentWindow から値を取得しようとしましたが、まだこれを機能させることができませんでした。
これを行う良い方法はありますか?
ブラウザーのセキュリティ モデルは、クロスドメイン トラフィック/通信を禁止します。異なるサブドメインを扱っている場合は、ルールを緩和してトップ ドメインにすることができます。しかし、最終的には、あなたに頼ることはできません。
ドメインの境界を越えて通信する必要があるアプリケーションがある場合、通常はバックエンドを経由するのが最善の策です。iframe 内のコンテンツを制御しないと、通常はうまくいきません。参考までに、Google マップはアプリケーションを使用するための API を提供しています。http://code.google.com/apis/maps/index.html
返信してくれてありがとう、
@svend:「バックエンドを経由する」とは正確には何ですか?私はそれを理解していません..私は他のドメインにあるiFrameのコンテンツを制御します。
@ウェバー:そのリンクウェバーをありがとう...それは私のためにうまくいくように見えます..私はそれを試してみます...
私はこのようにしなければなりませんでした:
1-ユーザーが変更するたびにlngとlatを保存するiframeを含むファイル内に非表示の入力を追加します。
2- js でこの関数を作成します。
function getFrameWindow(frameId) {
var frame = document.getElementById(frameId);
var result = null;
if (frame.contentDocument) {
// For NS6
result = frame.contentDocument.window || frame.contentDocument.defaultView;
} else if (frame.contentWindow) {
// For IE5.5 and IE6
result = frame.contentWindow;
} else if (frame.document) {
// For IE5
result = frame.document.window;
}
return result;
}
3- iframe を含む JavaScript からこのコードを使用しました。
getFrameWindow("iframe").document.getElementById("lat").value
jQuery を使用して、iframe 内のコンテンツにアクセスできます。
<iframe id="iframeId" ...> .... <div id='someData'>data</div> ....</iframe>
$('#iframeId').contents().find('#somedata').html(); // returns data
アプリケーションから非アプリケーションへのサンドボックス ブリッジを使用する必要があります。これにより、2 つの領域 (iframe と一般) の間で通信できるようになります。ここを見てください http://www.adobe.com/devnet/air/ajax/quickstart/sandbox_bridge.html
アプリケーションから非アプリケーション サンドボックス ブリッジへのアプリケーションは、クロス ドメイン通信の場合に機能しました。
返信ありがとうございます。