2015-12-31 21 views
3

在Firefox 45 Developer Edition全新安裝後,我看到了此頁面。它有一個按鈕,點擊時(「讓我們做吧」),不知何故在Windows 10開啓了選擇默認應用設置頁面這個JavaScript如何在Firefox中打開Windows設置?

https://www.mozilla.org/en-US/firefox/windows-10/welcome/?utm_source=firefox-browser&utm_medium=firefox-browser

這是如何完成的?我無法通過該頁面上的迷宮式代碼中的開發者控制檯找到任何內容。此外,我會認爲瀏覽器不允許JavaScript打開與「設置」應用程序一樣敏感的內容。

回答

2

頁觸發對文檔mozUITour類型的自定義事件。該事件在瀏覽器中由content-UITour.js處理,其將大部分實際處理剷除到UITour.jsm。未混淆的客戶端代碼可以在UITour-lib.js中查看。

通過所有的客戶端抽象切割,這是發生了什麼事:

document.dispatchEvent(new CustomEvent('mozUITour', { 
    bubbles: true, 
    detail: { 
     action: 'setConfiguration', 
     data: { 
      configuration: 'defaultBrowser' 
     } 
    } 
})); 
在瀏覽器

然後,處理該事件,在另一個內部的事件隊列,在那裏將被處理分派事件撥打nsIShellService::setDefaultBrowser,執行nsWindowsShellService.cpp。在什麼是目前943行,我們有:

if (IsWin10OrLater()) { 
    rv = LaunchModernSettingsDialogDefaultApps(); 
} else { 
    rv = LaunchControlPanelDefaultsSelectionUI(); 
} 

而且LaunchModernSettingsDialogDefaultApps,我認爲,是一個很好地說明了函數名。

現在,從您的評論中,「以某種方式可以在自己的網頁上使用它,例如」?不太可能。 content-UITour.js檢查頁面是否具有uitour權限。從browser/app/permissions,我們有:

# UITour 
origin uitour 1 https://www.mozilla.org 
origin uitour 1 https://self-repair.mozilla.org 
origin uitour 1 https://support.mozilla.org 
origin uitour 1 about:home 

所以,除非你是www.mozilla.orgself-repair.mozilla.orgsupport.mozilla.orgabout:home,你不能做到這一點,至少不是默認。在Firefox 15之前(有關手動設置的更改,請參閱this bug以獲取更多信息),您可能可以使用netscape.security.PrivilegeManager.enablePrivilege向瀏覽器請求額外的權限,但這種情況已不再存在,我不確定哪怕觸及相同的權限機制。

+0

謝謝,這是很多有用的信息。但它沒有回答如何(如在什麼代碼中)用於觸發設置應用程序。例如,可以在自己的頁面上使用它。 – rvighne

+0

不錯,非常詳細的答案! (感謝編輯)。畢竟,猜猜它真的太好了。 – rvighne

相關問題