2013-10-10 158 views
5

我想關閉JavaScript中的Firefox標籤。請不要誤解我。我不想關閉彈出式窗口,但選項卡。我知道JavaScript無法關閉它尚未打開的窗口。因此我嘗試了下面的代碼,但它適用於所有瀏覽器,但不適用於Firefox。從javascript關閉Firefox標籤

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。從IE 6到IE 8+以後,Internet Explorer需要一些額外的處理來說明不同的行爲。如果任何人有興趣,我也包括這一點。

  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代碼將不起作用。 (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 

這可能是一個很大的安全問題!

(在Linux上使用Firefox 27進行測試)

2

您可以試試這段代碼。 如果是Firefox瀏覽器。

gBrowser.removeCurrentTab();