0

如果由于我的 html5 布局而在 Internet Explorer 或 Firefox 中使用旧版浏览器,我正在使用带有 jQ​​uery 的 window.location.replace() 重定向到 wordpres 中的新页面。

              var browser = jQuery.browser;
              var version = browser.version.slice(0.3);

              if ( browser.msie && version != "10.0" && version != '9.0' ) {
                    window.location.replace("http://crosscom.dk/update-browser");
              }

               if ( browser.mozilla && version != "17.0" && version != '16.0' && version != '15.0' ) {
                    window.location.replace("http://crosscom.dk/update-browser/");
              }

重定向有效,但由于它加载在 wordpres 的标题中,它每次都在循环,你坐在上面:例如 IE 8。

所以我的问题是...

如何在浏览器重定向一次后终止脚本或在我的代码周围设置不同的参数以阻止脚本循环?

4

2 回答 2

5

循环是因为无论您在哪个页面上都会发生重定向,包括重定向目标。为避免循环,请测试您是否已经在重定向位置。

有很多方法可以实现这一点——最有效的可能是服务器端检查和重定向。但是,假设您的知识水平或部署要求意味着 JavaScript 替代方案更好,您可以使用以下代码:

var redirectLocation = "http://example.com/example.html"; // Redirect destination

// Page location and redirectLocation should not be the same
if (window.location.href !== redirectLocation) {
  // Redirect logic
}

将其直接应用于您自己的代码示例会产生:

var browser = jQuery.browser;
var version = browser.version.slice(0.3);
var redirectLocation = "http://crosscom.dk/update-browser/"; // Redirect destination

// Page location and redirectLocation should not be the same 
if (window.location.href !== redirectLocation) { 
  // Redirect logic

  if ( browser.msie && version != "10.0" && version != '9.0' ) {
    window.location.replace(redirectLocation);
  }

  if ( browser.mozilla && version != "17.0" && version != '16.0' && version != '15.0' ) {
    window.location.replace(redirectLocation);
  }

}
于 2012-12-03T13:10:15.930 回答
1

仅在需要重定向的页面上包含脚本

于 2012-12-03T13:09:50.127 回答