В дополнение к history.length в JavaScript вы можете прочитать / написать имя окна.
Таким образом, если вы проверите, имеет ли оно имя onload ..., оно должно быть пустым при самой первой загрузке ... если затем вы установите его в "foo" ... при каждой последующей загрузке в этом окне ... свойство window.name будет возвращать "foo" ... если вы не откроете ссылку в новой вкладке / окне ... в этом новом окне не должно быть задано имя.
(если, конечно, вы не открываете всплывающее окно с помощью window.open (URL, имя, функции); которое позволяет предварительно установить имя)
<script>
if(window.name == ''){
//first load (or Nth load in a new Tab/Window)
if(!SOME_VALUE_SET_FOR_2ND_TO_NTH_LOADS){
//set name so we can catch new Tab/Window
window.name = 'myWinName';
} else {
//we have a new Tab/Window (or something funky)
alert('What?! One window not cool enough for ya?\n' +
'Calling the InterWeb Police!');
}
} else if(window.name == 'myWinName'){
//2nd-Nth load
document.title = 'All is well... we think';
}
</script>
Предостережения:
- Если ваша страница изначально загружена в окне / фрейме, у которого уже есть имя ... все будет странно
- Если на вашей странице есть (именованные) iframes, и у вас есть ссылки, предназначенные для этих iframes, в IE7 / 8 есть ошибка, из-за которой, когда пользователь открывает эти ссылки в новой вкладке / окне, новая вкладка / окно будет " унаследовать "имя iframe, который был изначально нацелен (очень большая ошибка ODD, исправления не ожидается)