如何修复新浏览器中点击重定向链接无响应仅显示Redirecting的问题
问题根源
你现有代码存在环境兼容问题、多处语法/拼写错误,导致Chrome中JS执行抛出异常中断,页面无响应:
ActiveXObject是IE独有的API,Chrome/Edge等现代浏览器完全不支持,在Chrome中执行这段代码会直接抛出未定义错误,阻塞后续所有JS逻辑- 存在多处拼写错误:
AciveXObject少了字母t(正确为ActiveXObject)、varshell缺少变量名空格(正确为var shell)、setTimeot少了字母i(正确为setTimeout)、行尾分号误写为冒号、h1标签错误放在<head>节点内 - 未定义
pageRedirect函数,setTimeout调用的目标方法不存在 - 未做浏览器类型判断,所有浏览器都会尝试执行IE专属的ActiveX逻辑
修复方案
调整逻辑:仅在IE浏览器下执行唤起Chrome的逻辑,其他现代浏览器直接跳转目标地址即可,修正后的完整代码如下:
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title>Redirecting</title> </head> <body> <h1>Browser Redirect</h1> <script type="text/javascript"> // 判断是否为IE浏览器 function isIE() { return window.ActiveXObject !== undefined || "ActiveXObject" in window; } function pageRedirect() { var targetUrl = "你要跳转的Chrome目标链接"; var ieOldUrl = "IE下要跳转的旧版页面链接"; if (isIE()) { try { // IE下唤起Chrome打开目标链接 var shell = new ActiveXObject("WScript.Shell"); shell.run('chrome "' + targetUrl + '"'); // IE本身跳转到旧页面 window.location.replace(ieOldUrl); } catch (e) { // 如果用户IE禁用了ActiveX,提示用户手动打开Chrome document.body.append("请使用Chrome浏览器访问本站点"); } } else { // 非IE浏览器直接跳转到目标地址 window.location.href = targetUrl; } } setTimeout(pageRedirect, 3000); </script> </body> </html>
额外注意事项
- IE浏览器的安全配置默认会禁用ActiveX控件,部署后需要用户在IE的安全设置里允许ActiveX控件执行,否则唤起逻辑会失效
- 如果是内网场景,可以搭配组策略配置IE的受信任站点权限,自动放行ActiveX调用,避免用户手动配置
内容的提问来源于stack exchange,提问作者user17444611
相关产品推荐
相关产品推荐

