从javascript文件中启动Microsoft Edge浏览器?

3
var oIE = new ActiveXObject("InternetExplorer.Application");
var URLname1 = "http://www.google.com";
var URLname2 = "http://www.bing.com";
var navOpenInBackgroundTab = 0x1000;
oIE.Visible = true;
oIE.Navigate2(URLname1);
oIE.Navigate2(URLname2, navOpenInBackgroundTab);

以下是我的javascript文件(launch.js)中的一段代码,它可以打开Internet Explorer并在同一浏览器窗口中使用第二个URL打开一个新选项卡。
如何使用ActiveXObject()或另一种类似方法在Windows 10中启动Microsoft Edge而不是IE浏览器?我找不到Microsoft Edge的InternetExplorer.Application等效项。

微软Edge浏览器不再支持ActiveX。http://blogs.windows.com/msedgedev/2015/05/06/a-break-from-the-past-part-2-saying-goodbye-to-activex-vbscript-attachevent/ 你从哪里启动launch.js? - securecodeninja
嗨Roman。我正在从我的桌面执行脚本.js文件。因此,JavaScript代码本身是由Windows的JavaScript运行时执行而不是Edge或IE。 - Castaa
这就像你双击桌面上的.js文件一样,还是会在Windows启动时执行? - securecodeninja
我正在双击,是的。 - Castaa
2个回答

6

Windows 10提供URI架构,可从任何浏览器启动Microsoft Edge。我们完全不使用AcitveXObject。

只需在您的URL之前包含microsoft-edge协议处理程序即可。

我是如何解决它的

function openLinkInIE(url){
  window.open("microsoft-edge:"+ url);
}

嗨,变量“window”的类型是什么? - Castaa
这是 Web Api 的一部分,请查看此链接以获取更多信息。 https://developer.mozilla.org/zh-CN/docs/Web/API/Window/open - Murtaza Haji

3
请创建WSH Shell对象的实例:
var oShell = new ActiveXObject("WScript.Shell");
oShell.Run("cmd.exe /C start microsoft-edge:http://www.microsoft.com");

在我的测试中,当在Windows上执行时,这段代码无法打开Edge浏览器。它只会打开一个命令提示符窗口。你能用吗?(我通过将其剪切并粘贴到test.js文件中,然后双击它进行了测试。) - Castaa
更新!在命令字符串中添加/C使其正常工作。 "cmd.exe /C start microsoft-edge:http:// www.microsoft.com"现在我仍然需要弄清楚如何在同一Edge窗口中以新标签页打开后续URL。但这是一个好的开始! - Castaa
更新我的代码。如果有帮助,请不要忘记投票。 - securecodeninja
你的落地页是你维护的网站吗?如果是,你可以添加JavaScript代码,在页面加载后打开选项卡。 - securecodeninja
实际上,使用Run()方法多次并使用不同的URL确实会在同一个Edge浏览器窗口中打开新标签页。我应该测试一下,而不是假设它会打开多个Edge浏览器窗口。你的解决方案对我有效。我已将其标记为已接受。我唯一剩下的问题是优雅性。当通过脚本一次性打开许多URL(在我的情况下是40多个URL)时,它必须打开然后关闭40个临时命令提示符窗口。将Run()的第二个参数添加为2至少可以将cmd窗口最小化,直到它们最终自行关闭。 - Castaa
同时处理40多个URL,你确定你没有写恶意代码吗?我建议从用户体验的角度重新审视您的网站/页面的意图和设计。 - Reahreic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接