javascript - ページ上のすべてのリンクを新しいウィンドウで開く方法はありますか?
5 に答える
リンクのみで構成されるページがある場合は、を検討して<base target="_blank">
ください。これにより、すべてのリンクが新しいウィンドウで開きます(ただし、でオーバーライドされない限り、フォームのターゲットも含まれます<form target="_self">
。
他の人が示しているように、HTMLソースを変更せずに、Javascriptを使用してすべてのタグを反復処理し、属性<a>
target
を追加するか、ターゲット属性を動的に設定するイベントリスナーを追加できます。
jQueryをお持ちの場合は簡単です
$("a").attr("target", "_blank");
または通常のJavascript
var links = document.links;
for (var i = 0; i < links.length; i++) {
links[i].target = "_blank";
}
@Lekensteynの提案によると、Javascriptなし(完全性のために追加)
<base target="_blank">.
CSS:いいえ
。JavaScript:クリックイベントを委任します。これtarget="_blank"
により、リンクのクリック時に属性が追加されます。
document.body.addEventListener(function(e) {
if (e.target.nodeName.toUpperCase() === 'A' && e.target.href) {
e.target.target = '_blank';
}
}, true);
注:<a>
要素に他の要素が含まれている場合は、ツリーをトラバースして、アンカー要素がクリックされているかどうかを確認することをお勧めします。
document.body.addEventListener(function(e) {
var target = e.target;
do {
if (target.nodeName.toUpperCase() === 'A' && target.href) {
target.target = '_blank';
break;
}
} while (target = target.parentElement);
}, true);
または、jQueryが好きな場合:
$('body').on('click', 'a', function(e) {
e.target.target = '_blank';
});
うん、uは値'_blank'で'target'という名前のHTMLドキュメント内のすべてのリンクにJSの属性を追加できます;)
これを使用して、urlからjavascript:openInWindow(url)へのすべてのリンクのreplace hrefを開くこともできます。また、JSで関数を記述して、新しいウィンドウを開き、その場所をurlに設定します;)Googleが両方を支援します。
base
Javascriptを使用してページにhtml要素を追加するだけです。
var e = document.createElement("base");
e.target = "_blank";
document.head.appendChild(e);