Результат window.open - это еще одна ссылка на окно. На вашей странице вы можете просто использовать window.close.
Просто имейте в виду, что если это единственная открытая вкладка, она может попросить пользователя разрешить закрытие окна.
Благодаря комментарию Даррена я понимаю, что вы можете закрыть окна из центральной точки. Это может работать с внешней веб-службой. Ваши ссылки могут быть в форме http://anotherpage?openedfrom=thispage, а затем новая страница может периодически связываться с центральной точкой и посмотреть, нужно ли ее закрывать. На исходной странице вы можете указать службе «закрыть все окна, открытые этим». В этом контексте «эта страница» будет случайным образом сгенерированным ключом для идентификации начальной страницы.
Если вы хотите сделать это только в текущем браузере, вам может даже не понадобиться использовать веб-службу, а вместо этого используйте local storage.
Вот код для него (тестовый HTML файл называется test13.html - изменить название соответственно):
<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'></script>
<a href="test13.html" target="_blank">A link</a><br/>
<input type="button" value="Close all opened windows"/>
<script>
function guid() { //generates a random GUID like string
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
}
window.windowKey=guid(); //generates a key for the window
//uncomment this if you want all the opened pages to share a key
//var m=/[\?&]windowKey=([^\?&]+)/.exec(document.location.href);
//if (m) window.windowKey=m[1];
if (!window.localStorage) {
alert('No local storage, no autoclosing pages');
} else {
$('input').click(function() { //click on the button to close all pages referred by this one
window.localStorage.setItem(windowKey,"yes");
});
window.localStorage.setItem(windowKey,"no"); // you could skip this if you don't want to list the opened window keys
$(window).on('beforeunload',function() {
window.localStorage.removeItem(windowKey); // clean up localStorage
});
setInterval(function() {
var m=/[\?&]windowKey=([^\?&]+)/.exec(document.location.href);
if (!m) return;
var referralKey=m[1]; //get the key from the windowKey URL parameter
var shouldClose=window.localStorage.getItem(referralKey)=="yes";
if (shouldClose) window.close(); //close this page if the key is marked for closing
},1000);
// you might want to execute this on window.ready
$('a').each(function() { //add the window key to all the links on the page
var a=$(this);
var url=a.attr('href');
url=url+(/\?/.test(url)?'&':'?')+'windowKey='+windowKey;
a.attr('href',url);
});
}
</script>
Если вы хотите поддержать сценарий: страница А открывает страницу B, которая открывает страницу C, а затем закрывается B и C, измените Guid строку:
window.windowKey=guid();
var m=/[\?&]windowKey=([^\?&]+)/.exec(document.location.href);
if (m) window.windowKey=m[1];
Это Безразлично Не работайте - он хочет знать, как закрыть вкладку FROM страницы, с которой он открыл ее (например, щелкнуть правой кнопкой мыши и открыть на новой вкладке) (верьте, это то, на что он надеется. – Darren
Я добавил код для решения проблемы проблема в вопросе, но я не считаю, что это хороший дизайн. Разумеется, при условии, что вы не открываете ссылки с другим экземпляром браузера. –