2016-04-10 14 views
1

私はWebベースのゲームを作成しています。その一環として、プレイヤーはウェブサイトのホームページに移動し、できるだけマイナーな時間に「目的地ページ」に到達するまで一連のリンクをたどる必要があります。それをリンク宝探しの一種と考えてください。クロスドメインURLを取得するiFrameの代替方法

ゲームをコントロールするために、上にjavascriptタイマーのページを作成し、サーフするウェブサイトを表示するiFrame(これは私のものではなく、私はコントロールできません)。

しかし、これには大きな障害があります.iFrameの現在のドメイン間URLを検出することはできないため、ユーザーが宛先ページに到着してゲームを停止したときに私のページはわかりません。

これを達成するための方法はありますか?

答えて

0

これを実現する方法はありますか?

いいえ、ありません。

同じオリジンポリシー完全には、別のドメインのコンテンツを表示するウィンドウオブジェクトのプロパティにアクセスできないようにします。

(一方が他方のサブドメインだった場合は、document.domainが役立つだろうしかし、それはそうであったように、あなたの問題の説明から、それは鳴りません。)


と技術的な問題以外にも:生成独自のゲームを表示できるようにするために、自分が所有していないサイトでのトラフィックやクリック(統計や分析を歪める)はむしろ不公平になることがあります。

+0

ウェブサイトの所有者が私に許可を与えてくれました。しかし、明らかに、彼は私のゲームと互換性を持たせるために彼のウェブサイトを編集したくないです – user2747949

+0

ああ、その場合は... :)彼らは外部のJavaScriptを埋め込むことを望んでいればあなたのサイトを形成したら、 'postMessage'を使ってフレーム間で通信することができます。 (Koushikは彼の答えでpostMessageについて既に言及していましたが、彼のアプローチはうまくいかないと思います - "あなたはiFrameの' 'にonloadハンドラを追加することができます。部分はSOPがもう一度言わない部分です) – CBroe

0

contentWindowのiFrameが解決され、iFrameのウィンドウへの参照があるまで待つことができますソースを実用的にネージしました。 これを済ませたら、iFrameの<body>にonloadハンドラを追加して、そのハンドラ内にpostMessageコールを挿入すると、iFrameのウィンドウがボディにロードされると、bodyのonloadハンドラからpostMessageが呼び出され、ウィンドウの外側のウィンドウにメッセージリスナーを追加する必要がありますwindow.addEventListener("message", callback)

+0

これは興味深い、しかし、クロスドメインのiFramesではうまくいかないと思いますか? – user2747949

+0

'postMessage'はドメインの境界を越えて動作します。 SOPがこの部分を許可しているのではないかと疑問に思う:_ "iFrameの '' "_ – CBroe

+0

にonloadハンドラを追加することができます。詳細はpostMessage APIを参照してください。APIの目的は異なるウィンドウ内のクロスドメインと通信することですiframeとメインウィンドウの –

関連する問題