Как сфокусировать существующую вкладку в окне? (веб-страница, а не расширение)

Я пытаюсь сфокусировать существующую вкладку при перезагрузке содержимого. Обычные оконные методы не работают.

Вот что происходит: на page_1 у меня есть ссылка типа...

<a href="page_2.html" target="page_2">Go to my other page</a>

Если вкладка не существует, при нажатии на ссылку открывается новая вкладка и фокусируется на ней. (Идеально)

Если вы затем вернетесь к page_1 и снова щелкнете по ссылке, она перезагрузит содержимое на существующей вкладке (идеально), но не сфокусируется (дерьмо). Я безуспешно пробовал обычные методы window.focus, $(window).focus при загрузке с page_2.

Есть рекомендации?


person Community    schedule 09.07.2009    source источник


Ответы (4)


Это невозможно.

person Quentin    schedule 09.07.2009
comment
И я бы сказал, что повезло! - person Ms2ger; 09.07.2009

В IE8 и FF13 работает следующее:

<script type="text/javascript">
// Stupid script to force focus to an existing tab when the link is clicked.
// And yes, we do need to open it twice.
function openHelp(a) {
    var tab = window.open(a.href, a.target);
    tab.close();
    tab = window.open(a.href, a.target);
    return false;
}
</script>
<a href="help.html" target="help" onclick="return openHelp(this);">Help</a>
person Alex    schedule 06.03.2013
comment
К вашему сведению, нельзя снова и снова публиковать один и тот же ответ с одним и тем же содержанием. Вы уже публиковали тот же ответ ранее. - person Paresh Mayani; 06.03.2013

Для этого есть обходной путь. Используйте javascript, чтобы открыть окно на новой вкладке, сохранить ссылку на эту вкладку и когда вы хотите сфокусировать ее; сначала закройте его, а затем снова откройте.

if (window.existingWindow != null) 
  try { window.existingWindow.close(); } catch (e) { };
window.existingWindow = window.open("/your/url", "yourTabName");

Мы используем аналогичный подход к открытию панели предварительного просмотра текущей страницы, над которой вы работаете, в нашем сервисе под названием Handcraft, где описанное выше работает, как и ожидалось (мы хотели, чтобы новое окно всегда фокусировалось).

person Martin Kool    schedule 20.06.2011

Без использования фреймворка вы можете поместить блок скрипта внизу страницы, который будет запускаться после загрузки страницы. Поскольку это после вашего HTML, вы можете быть уверены, что HTML, на который ссылается, действительно доступен.

Скрипт может установить фокус на нужный элемент.

person Diodeus - James MacFarlane    schedule 09.07.2009
comment
Вопрос в фокусировании вкладок браузера, а не элементов. - person Quentin; 09.07.2009