【问题标题】:Is that possible redirect to open in Chrome from IE, but also have that redirect work if Chrome is already in use?是否可以重定向以从 IE 在 Chrome 中打开,但如果 Chrome 已在使用中,该重定向是否也可以工作?
【发布时间】:2022-01-11 10:21:36
【问题描述】:

我使用 ActiveXObject 为我的网站创建了一个从 IE11 到 Chrome 的重定向链接,当我在 IE 中打开链接时它可以工作,但是当我在 Chrome 中打开该重定向链接时它不起作用,有没有办法解决这个问题.

<html lang="en">
<head>
<meta charset="utf-8">
<title> Redirect</title>
<h1>Browser Redirect</h1>
<script type="text/javascript">
  {
   varshell= new ActiveXObject("WScript.Shell");
   shell.run("Chrome http://example.com");
  }
  setTimeout("pageRedirect()",3000);
</script>
</head>
</html>

【问题讨论】:

  • Chrome 不支持 ActiveXObject。此示例也仅适用于非常有限的 IE11 情况,并且通常需要修改安全设置。 (有一些 Chrome 插件通过在选项卡中嵌入 IE 来做或做过;这超出了问题的范围。)
  • “正常”重定向,在当前浏览器中,只需分配给window.location - stackoverflow.com/q/503093/2864740 即可完成(有一些变体,还有一些不太常见的替代方案)
  • 您还想在 Chrome 中重定向到另一个网站吗?如果是这样,我认为斯蒂芬奥斯特米勒的回答是正确的。如果您在 IE 中打开页面,它将打开 Chrome 并重定向到该站点,如果您在 Chrome 中打开页面,它将直接重定向。

标签: google-chrome redirect internet-explorer-11


【解决方案1】:

您可以使用 pageRedirect 函数 check if active X is available 并根据该函数选择如何重定向:

function pageRedirect(){
  var url="http://example.com"
  if ("ActiveXObject" in window) new ActiveXObject("WScript.Shell").run("Chrome "+url);
  else location.href = url
}
setTimeout(pageRedirect,3000);

我还改变了一些其他的东西:

  • 您没有在示例代码中定义 pageRedirect,因此看起来您的代码实际上无法正常工作。
  • setTimeout 可以将函数名作为第一个参数并运行该函数。这样做通常比向其传递要执行的代码字符串更可取。
  • 您不需要定义varshell 变量,您可以直接在构造的new 对象上调用run 而无需将其分配给变量。

【讨论】:

  • 标准重定向方法也适用于 IE11(及之前)。想必ActiveX的使用是为了“打开chrome”。然而 ActiveX 可能根本不应该在这里使用,它会在公共站点上失败,即使在 IE 中(或者当 WScript.run 调用失败时)。如果确实不使用 IE,则横幅(或其他警告)更适合 (fsvo),因此用户可以手动切换到“现代”浏览器。
猜你喜欢
  • 2019-05-18
  • 1970-01-01
  • 2014-07-22
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 2012-06-25
  • 2018-04-08
  • 2017-11-08
相关资源
最近更新 更多