次のようなものを使用できます
<!-- HTML -->
<a id="opener">Open window</a>
// JavaScript
var a = document.getElementById('opener'), w;
a.onclick = function() {
if (!w || w.closed) {
w = window.open("https://www.google.com","_blank","menubar = 0, scrollbars = 0");
} else {
console.log('window is already opened');
}
w.focus();
};
ワーキングjsBin | window.open メソッドの詳細
複数のウィンドウを制御したい場合は、以下のスニペットを使用してください
<!-- HTML -->
<a href="https://www.google.com" class="opener">Open google.com</a> |
<a href="http://www.yahoo.com" class="opener">Open yahoo.com</a>
//JavaScript
window.onload = function(){
var a = document.querySelectorAll('.opener'), w = [], url, random, i;
for(i = 0; i < a.length; i++){
(function(i){
a[i].onclick = function(e) {
if (!w[i] || w[i].closed) {
url = this.href;
random = Math.floor((Math.random() * 100) + 1);
w[i] = window.open(url, "_blank", random, "menubar = 0, scrollbars = 0");
} else {
console.log('window ' + url + ' is already opened');
}
e.preventDefault();
w[i].focus();
};
})(i);
}
};
ワーキングjsBin
別のウィンドウにロードしたくない場合は、この行を除外してください
random = Math.floor((Math.random()*100)+1);
random
次の行から参照を削除します
w[i] = window.open(url, "_blank", random, "menubar=0,scrollbars=0");
補足: 上記のように、サードパーティのコンテンツを含む 2 つのウィンドウを作成しました。それらから(親/オープナーウィンドウへの)参照を取得する方法がないことを知っておく必要があります。