2013-10-10 2 views
5

Я хочу закрыть вкладку Firefox из JavaScript. Пожалуйста, не поймите меня неправильно. Я не пытаюсь закрыть всплывающее окно, но вкладку. Я знаю, что JavaScript не может закрыть окно, которое он не открыл. Поэтому я попытался использовать код ниже, но он работает во всех браузерах, но не в Firefox.Закрыть вкладку firefox из javascript

window.open('','_self',''); 
Window.close(); 
+0

Не возможно, если окно не имеет родителя. Firefox обновил этот путь обратно в одной из версий, где они остановили закрытие окна без родительского окна. –

+0

https://support.mozilla.org/en-US/questions/966137 Вы можете закрывать всплывающие окна только в firefox, а не в браузере или вкладку браузера – Rohit

ответ

3

Вот то, что я узнал от StackOverflow нить (к сожалению, не удалось найти это сделать ссылку на этот ответ):

window.open(document.URL,'_self','resizable=no,top=-245,width=250,height=250,scrollbars=no'); 
window.close(); 

Это закрывает окно/вкладку. Его можно охарактеризовать как взломать. По сути, он обманывает браузер, полагая, что текущее окно - это окно/вкладка, открытая JavaScript. Поскольку правило, похоже, заключается в том, что JavaScript может закрыть окно, открытое JavaScript.

Работает в Chrome, Firefox. Internet Explorer нуждается в небольшом дополнительном лечении для учета различного поведения с IE 6 до IE 8+. Я тоже включаю это, если кто-то заинтересован.

  var Browser = navigator.appName; 
      var indexB = Browser.indexOf('Explorer'); 
      if (indexB > 0) { 

       var indexV = navigator.userAgent.indexOf('MSIE') + 5; 
       var Version = navigator.userAgent.substring(indexV, indexV + 1); 

       if (Version >= 7) { 
        window.open('', '_self', ''); 
        window.close(); 
       } 
       else if (Version == 6) { 
        window.opener = null; 
        window.close(); 
       } 
       else { 
        window.opener = ''; 
        window.close(); 
       } 
      } 
      else { 
       window.close(); 
      } 
+3

Благодарим вас за быстрый ответ, но приведенный выше код не работает в FF 24. Для других браузеров у меня есть код, но это только проблема с FF 24. Проблема с последним браузером FF заключается в том, что они может определить, что если открытие окна из JS является всплывающим окном или окном в собственном браузере. Таким образом, код gievn не будет работать. window.open (document.URL, '_ self', 'resizable = no, top = -245, width = 250, height = 250, scrollbars = no'); window.close(); – user2867978

+0

Похоже, что они еще более затянули [FF] модель безопасности JS (https://support.mozilla.org/en-US/questions/966137). –

+0

Я думаю, вы имеете в виду этот вопрос: http://stackoverflow.com/questions/2076299/how-to-close-current-tab-in-a-browser-window Возможно, этот вопрос должен быть отмечен как дубликат. – user2345998

5

Если у вас есть один/несколько страниц пользователей и у вас есть доступ к Firefoxes вы можете изменить настройки about:config.

dom.allow_scripts_to_close_windows = true 

Это может быть серьезная проблема с безопасностью!

(Протестировано с Firefox 27 на Linux)

2

Вы можете попробовать этот код. Если это браузер Firefox.

gBrowser.removeCurrentTab();

Смежные вопросы