全新安装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打开与“设置”应用一样敏感的内容。
最佳答案
该页面会在文档上触发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.org
,self-repair.mozilla.org
,support.mozilla.org
或about:home
,否则您将无法做到这一点,至少默认情况下不会这样做。在Firefox 15(具有手动设置的17更改,请参阅this bug以获得更多信息)之前,您可能可以使用 netscape.security.PrivilegeManager.enablePrivilege
向浏览器请求额外的权限,但这不再存在,而且我不确定是否触及相同的权限机制。