2011-11-10 12 views
0

だから私はちょうどこれについていくつかの助けが必要です。別のHTMLページにアンカーがあり、これらのページはすべて1つの外部JSファイルにリンクされています。リンク上のJavascriptの発砲イベント

だから私は1ページで

<!-- language: none --> 

page1.html 
page2.html 
js.js 

を持って、私は、ユーザーがそのリンクを開いたときPAGE2に発射するjavascript関数をしたい、PAGE2上の特定のアンカーにリンクするリンクを持っています。私はpage1のリンクからonclickを使って2ページ目の要素をIDで取得することはできず、xssを停止するためにjsの関数を呼び出すことはできません。

だから、TL; DR

page1.htmlは - >リンクはこちらです
page2.html - >先は、ユーザーが目的地に到着したとき、私は、JSファイル内の関数が起動したく、ここにあります。しかし、リンクを介して2ページ目の特定のアンカーに到着したときのみ。 (例:p1のリンクはpage2.html#destinationになります)

これは可能ですか?私はonfocusonevent、およびonchangeハンドラをページ2のアンカーに付けてみましたが、動作しません。

答えて

2

はい。プロパティwindow.location.hashを使用してください。 (page2.html上)のようなので:あなたはPAGE2は、特定の方法に到着された場合にのみ実行するようにPAGE2にいくつかのJSをしたい場合

if(window.location.hash === '#destination') { 
    // Call your function here 
} 
0

、その後、それを行うための通常の方法は、ページ1のクエリパラメータを追加することですpage2に行き、page2がそのクエリパラメータを探すとき。 page2が起動すると、クエリパラメータが検索され、余分なJSがあればそれが実行されます。

ページ1がpage1.htmlで、ページ2がpage2.htmlの場合、ページ1の特別リンクはpage2.html?action=1にリンクします。

page2.htmlのjavascriptはURl内でaction=1を探し、page2.html上にある場合にのみ特別なJSを実行し、URLにaction=1が含まれていることがわかります。

すべてのクエリパラメータはwindow.location.searchで利用できます。あなたが他のクエリパラメータを期待されていない場合は、あなただけ使用することができます。

if (window.location.search == "?action=1") { 
    // execute your code here 
} 

他のクエリパラメータがあるかもしれません場合は、あなたがこれを使用することができます。

if (window.location.search.match(/(\?|&)action=1($|&)/)) { 
    // execute your code here 
} 
+0

はどのように「取得する彼に言います彼はおそらく知らないので行動= 1 – ajax333221

関連する問題