2008-09-16 2 views
1

Можно ли запустить новое окно в JavaScript с помощью функции window.Open, а затем установить фокус на эту вкладку?Возможна установка фокуса вкладок в IE7 из JavaScript

Вот что я делаю сегодня:

 
      var winRef = window.open(outUrl,wName,'left='+ wX +',top=' + wY + ',height=' + wH + ',width=' + wW + args); 
      try { 
       // Not all window types support the focus() property. 
       winRef.focus(); 
      } 
      catch (exception) { 
      } 

открывает окно, но новая вкладка не получает фокус.

ответ

4

Jay,

Вы видите спроектированное поведение. Чтобы ограничить возможности для вредоносного поведения, скрипты, запущенные в окнах с вкладками, не могут влиять на другие вкладки.

Для получения дополнительной информации, пожалуйста, см вкладок для разработчиков на http://msdn.microsoft.com/en-us/library/ms537636.aspx:

«Возможность открывать несколько документов в одном окне браузера имеет определенное практическое и безопасность ПОСЛЕДСТВИЕ [...] Активные вкладки (вкладки с фокусом) не могут быть затронуты сценариями, которые запускаются в неактивных или фоновых вкладках ».

BR.

1

Как пользователь, я никогда не хочу, чтобы приложения (или вкладки) фокусировались, если я специально его не просил. Я пошел на многое, чтобы предотвратить включение вкладок в моем браузере (Firefox) из-за фокуса по этой причине.

1

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

Мое понимание заключается в том, что это делается для того, чтобы несколько ограничить всплывающие окна и другие вредоносные материалы, чтобы украсть фокус пользователей.

1

Если другая «вкладка» является частью вашего приложения (а не контента с другого сайта), возможно, вы должны включить его во всплывающее div поверх основного содержимого, а не в отдельном окне; таким образом вы всегда можете контролировать фокусировку, деактивировать содержимое под ним (для модальных диалогов), скрывать его и т. д.

1

Как пользователь должен ли я контролировать, как это работает?

Что делать, если приложение, которое будет расширено этой функцией, которую я хочу запустить, - не должен ли я предоставлять домен, который имеет привилегию?

Просто мысль.