0

すべての外部ハイパーリンクに対していくつかの単純なロジックを実行するための単純な JQuery / Javascript があります。

<script>
    $("a[href^='http://']:not([href*='"+location.hostname+"']),[href^='https://']:not([href*='"+location.hostname+"'])")
    .addClass("external")
    .attr("target","_blank")
    .attr("title","Opens new window").click(function(e) {alert('You are leaving mysite and going somewhere else, you crazy dude')});
</script>

1ページならこれでいい。ただし、アプリケーションのすべての Web ページにこれを配置し、そこにあることを 100% 保証したいと考えています。

これを行うための良いトリックはありますか?

私が考えることができる唯一の方法は、Java アーキテクチャを使用している場合、ベース JSP を持ち、ベース JSP がこれを呼び出すようにすることです。

より良いアイデアはありますか?

4

4 に答える 4

2

サーバー側のフレームワークは必要ありません... テンプレート ライブラリ (jade ハンドルバー、口ひげ、jquery テンプレート) を使用する場合、または単に HTML ファイルを分離する場合は、jquery を使用してそれらをそれぞれ取り込み、ページにレンダリングできます。 . .load 関数を確認してください。

また、HTML ページが静的であっても分離する必要があります。

于 2012-06-29T23:29:36.040 に答える
1

関数でラップして、関数を呼び出します。次に、関数を呼び出すだけで、実装を関数呼び出しに任せることができます。もちろん、asp.net や php などのサーバー側テクノロジを指定しなかったため、それを使用する他のオプション (部分ビューまたはテンプレート) があります。

function doStuff(){

   $("a[href^='http://']:not([href*='"+location.hostname+"']),     
     [href^='https://']:not([href*='"+location.hostname+"'])")
     .addClass("external")
     .attr("target","_blank")
     .attr("title","Opens new window").click(function(e) {alert('You are leaving mysite and going somewhere else, you crazy dude')});

}

<script>
   doStuff();
</script>
于 2012-06-29T23:26:52.337 に答える
0

これは、サイトの構造によって異なります。サーバー側のフレームワーク (JSP の例など) がある場合は、スクリプトが何らかの方法で確実に含まれるようにする関数を使用できます。

静的な HTML ページしかない場合は、そのコードをスクリプト ファイル (たとえば ) に入れることをお勧めしますdontleaveme.js。次に、すべてのページで、

<script src="dontleaveme.js"></script>
于 2012-06-29T23:26:50.210 に答える
0

優れたアプリケーション設計には、すべてのページで使用されるレイアウト ファイルまたはヘッダー ファイルとフッター ファイルがあります。その後、スクリプトの追加など、サイトのすべてのページに影響する変更を簡単に加えることができます。この手法を使用していない場合は、これが開始する大きな理由です。

于 2012-06-29T23:28:44.573 に答える