ブラウザでJavaScriptまたはJqueryを使用してハイパーリンクの属性をキャッチして新しいタブイベントを開くことはできますか?
ハイパーリンクがあり、リンク<a href="http://example.com/something">MyLink</a>
を右クリックして新しいタブを開くと、最初にアラートが表示されるとしましょう " http://example.com
"
ブラウザでJavaScriptまたはJqueryを使用してハイパーリンクの属性をキャッチして新しいタブイベントを開くことはできますか?
ハイパーリンクがあり、リンク<a href="http://example.com/something">MyLink</a>
を右クリックして新しいタブを開くと、最初にアラートが表示されるとしましょう " http://example.com
"
これは、ブラウザ拡張機能を作成する場合にのみ可能だと思います。この種のものをJavaScriptで制御することはできません。
さて、これは私が思いつくことができる最高のものですが、それはきれいではありません。
ページ上のすべてのリンクが別のページを指すようにします(これをredir.htmlと呼びます)。redir.htmlには、次に開くページを定義するURLを介してパラメーターが渡されます(のように)redir.html?page=www.example.com/something
。次に、redir.htmlは、おそらく新しいタブ/ウィンドウで開かれた場合にのみ、必要なJavaScriptを実行します。これは、かどうかを確認することで検出できますwindow.history.length === 1
。
redir.html:
<script>
function getParameter(param) {
var val = document.URL;
var url = val.substr(val.indexOf(param))
var n=url.replace(param+"=","");
return n;
}
var page = getParameter("page");
if(window.history.length === 1)
{
alert("I opened in a new tab or window");
}
window.location.href = page;
</script>
ソースページのアンカータグの例:
<a href="redir.html?page=http://example.com/something">My link</a>
(このSO投稿getParameter
から関数を取得しました。)