全新安装Firefox 45 Developer Edition后,我看到了此页面。它具有一个按钮(“让我们来做”),单击该按钮后,将以某种方式打开Windows 10中的选择默认应用程序设置页面。

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

怎么做?我无法通过开发人员控制台在该页面上的迷宫代码中找到任何内容。此外,我本以为浏览器不允许JavaScript打开与“设置”应用一样敏感的内容。

javascript - 此JavaScript如何在Firefox中打开Windows设置?-LMLPHP

最佳答案

该页面会在文档上触发mozUITour类型的自定义事件。此事件在浏览器中由 content-UITour.js 处理,它将大部分实际处理都排除在 UITour.jsm 之外。可以在 UITour-lib.js 中查看未混淆的客户端代码。

贯穿所有客户端抽象,这是正在发生的事情:

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

然后,在浏览器中,它处理事件,将事件分派(dispatch)到另一个内部事件队列中,在该事件队列中,将通过调用 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(具有手动设置的17更改,请参阅this bug以获得更多信息)之前,您可能可以使用 netscape.security.PrivilegeManager.enablePrivilege 向浏览器请求额外的权限,但这不再存在,而且我不确定是否触及相同的权限机制。

07-24 09:44