2009-04-07 12 views
1

私はインターネット上のさまざまなサイトのリンクをクリックするというWebベースのゲームを書いています。私はそれが奇妙に聞こえるが、基本的な前提は、あなたが別のサイトのいくつかのページへのリンクをクリックする私のページから始めるということです。あなたはあなたが到達しようとしているページに到達するまで、引き続きリンクをたどります。 WikipediaGame.orgを考えてみてください。違いは、私は実際のページをリンクで管理することができないということです。ページにJavascriptを挿入する

私ができる必要があるのは、クリックしたすべてのリンクを追跡することです。最後のページに到達したら、自分のサイト(またはその行に沿ったもの)に送り返したいと思います。

私が考えていたのは、おそらく私は何とかページリクエストを傍受し、クリックしたリンクを追跡するためのJavaScriptを注入することができたということでした。これは可能ですか?誰もこれのような何かをしましたか?明らかに、これはセキュリティ上のリスクを引き起こす可能性があります。他のオプションはありますか?私は、ユーザーにすべてのリンクのリストを収集させ、それを自分のサイトのテキストボックスに投稿させないようにしたい。

答えて

0

私は何をすべきかを考え出しました。私はこのようにはiframeを使用しています:それは私のMVCコントローラへのソースを指す

<iframe src="Puzzle/ContinuePuzzle" />

。私のコントローラーでは、実際のURLのWebRequestを実行してから、Htmlを解析して、自分のjavascriptをページに貼り付けます。このページは他のサイトと同じように動作していますが、実際は自分のサイトから来ています。

1

あなたのサイトに現在のページを送信するブックマークレットですか?このようにして、ユーザーは最小限の作業で共有されるリンクのリストを完全に制御できます。

0

このクロスブラウザを互換性を持たせるには - ブラウザごとにプラグインを書き込まない方法があるかどうかはわかりません。しかし、私も間違っている可能性があります:-)

ブックマークレット(ユーザーが特定のブックマークをクリックしたときに実行されるJavaScript)を作成しようとすると、ユーザーが読み込むすべてのページで自動的に実行されません。ユーザーはそれをクリックして実行する必要があります。

Firefoxだけをサポートしたい場合は、すべてのページ/サイトで実行されるGreasmonkeyスクリプトを作成できます。しかし、それはあなたのユーザーの範囲を制限するでしょう。

0

javascriptを単独で使用することはできません。あなたは、Firefoxのプラグイン、またはGMスクリプトを書く必要があります。

-1

他の人のページにJavaScriptを注入する方法がわからないので、メッセージが送信されます。実際には、ウイルスが行うようなものと思われます。

あなたはiframeを使用したいと思うようなものを達成できると思います。
簡単な方法は、サイトの「開始」位置を読み込むためのiframeプリセットを含めることです。ユーザーが現在の位置(iframe内)をポストバックするためのボタンを外側のページに含めます。


iframeによって生成されたウィンドウとiframeに読み込まれたドキュメントの参照は、名前を使用してframes配列から取得できます属性。

window.frames[iframeName] <br/> 
window.frames[iframeName].document <br/> 

参照のフレームアレイ法は、限り、あなたはインラインフレームにname属性を付けるよう、でもかなり古いブラウザの中で、幅広い支持があります。最良の結果を得るには、nameとidの両方を使用してください。

// IE5.5+ windows 
document.getElementById(iframeId).contentWindow 
document.getElementById(iframeId).contentWindow.document 
or, 
// DOM 
document.getElementById(iframeId).contentDocument 

EDIT:より最新のブラウザでは

は、iframeの内部文書もcontentWindow(IEの勝利)とcontentDocument(DOM)iframe要素のプロパティを介して参照することができます。以下のコメントが示唆しているように、ほとんどのブラウザーがこのようにiframeを使用できないように見えます。必要な場所でウィンドウを起動できますが、同じドメインにない場合は、そのウィンドウと通信することはできません。私はあなたが最初にあなたのサーバを通ってすべてのトラフィックを流す "Man in the Middle"シーンを構築することができたと思いますが、それはあまり実用的ではありません。ここで

は役立ちます希望のiframeに

http://wwwendt.de/tech/dynatree/doc/sample-iframe.html

を制御するのjQueryの良い例です。

+0

これは許可されていないと思います。現代のブラウザではクロスサイトスクリプティングが嫌いです – erikkallen

+0

実際には、フレームが親ウィンドウと同じサイトにある場合にのみ、そのフレームを読むか、フレームに役立つその他の操作を行うことができます。 – bobince

0

あなたが想像しているようにこれを達成できるかどうかはわかりません。ブラウザのプラグインを書くことなく、私はKeepVidのようなサイトを見ていきます。あなたはツールバーにブックマークを作成しています。ブックマークのURLは次のとおりです:

javascript:document.location = 'http://keepvid.com/?url=' + escape(window.location);

これは基本的にユーザーがkeepvidに現在アクセスしているURLを渡します。このコンセプトを使用すると、ユーザーがブックマークボタンをクリックすると、そのURLをあなたに登録し、それを収集してユーザーを元の場所に戻すことができます。