web-dev-qa-db-ja.com

Javascript-新しいタブでリンクを開く(SAME WINDOW)

SOこのトピックについてはすでにいくつか質問がありますが、それらはすべてかなり古いようです...これについて最新の答えを得ようとしています:

(同じブラウザウィンドウ内で)新しいタブを開く標準的な方法は次のとおりです。

window.open('url', '_blank');
window.focus();

???

また、ブラウザのユーザー設定に依存することも読みました(新しいページが新しいタブで開くか新しいウィンドウで開くか、また新しいタブ/ウィンドウがフォーカスを取得するかどうか)...元のタブに留まるフォーカスのようですが、同じブラウザウィンドウでタブを開くことに関心があります(フォーカスを維持することは単なるボーナスです)。

新しいブラウザでこの設定を読み取る/取得する方法はありますか? (chrome、ff、ie)新しいウィンドウで開くように設定されている場合は、設定を変更するようユーザーに通知しますか?

7
A.O.

私は大成功を収めました

<a target='_blank' > 
12
Giganticus

target="_blank"を使用すると便利です。

例えば。 Chromeでは、target="_blank"でアンカーすると新しいタブが開きますが、window.openではまったく新しいウィンドウが開きます。

いくつかの実験を行って、window.opentarget="_blank"に置き換えました。

ポップアップブロッカーによってブロックされています

// create an anchor, add to body, trigger click
var a = document.createElement('a');
a.setAttribute('href', 'http://google.com');
a.setAttribute('target', '_blank');
document.body.appendChild(a);
a.click();

// Hijack first anchor, change href, trigger click
var a = document.getElementsByTagName('a')[0];
a.setAttribute('href', 'http://google.com');
a.setAttribute('target', '_blank');
a.click();

// Hijack first anchor that has target=_blank, change href, trigger click
var a = $('a[target="_blank"]')[0];
a.setAttribute('href', 'http://google.com');
a.click();

ポップアップブロッカーにより許可

// Hijack first anchor that has target=_blank, change href, next document click triggers it
var a = $('a[target="_blank"]')[0];
a.setAttribute('href', 'http://google.com');
$(document).click(function(){
    $('a[target="_blank"]')[0].click();
});

// create an anchor, add to body, next document click triggers it
var a = document.createElement('a');
a.setAttribute('href', 'http://google.com');
a.setAttribute('target', '_blank');
document.body.appendChild(a);
$(document).click(function(){
    a.click();
});

ユーザーインタラクションによってポップアップがトリガーされる限り、ポップアップブロッカーはそれを許可します。

window.openに関するMozillaのドキュメント:

https://developer.mozilla.org/en-US/docs/Web/API/window.open

9
Mike Causer