【问题标题】:JavaScript window.location.replace(url) Reloading Multiple TimesJavaScript window.location.replace(url) 重新加载多次
【发布时间】:2016-11-04 23:38:52
【问题描述】:

我的目标是创建一个脚本,根据用户的浏览器语言将用户从主页重定向到相关语言页面,这是我目前所拥有的:

<script>
    jQuery(document).ready(function() {
        var language = window.navigator.userLanguage || window.navigator.language;
        if (language === "en-US") {
            window.location.replace("/test")
        }
    });
</script>

问题是当/test 页面加载时,它会重新加载几次,然后才最终停止。请参阅下面的实际操作(仅在浏览器语言为“en-US”时有效)

http://ts564737-container.zoeysite.com/

谁能告诉我哪里出了问题以及为什么要多次更换该位置?提前道歉,我才刚刚开始学习编码。感谢您的宝贵时间。

【问题讨论】:

  • 我猜同样的脚本也出现在您要重定向到的页面上?在出现问题并且重定向停止之前会导致无限循环?您可以尝试在重定向之前确定位置,以便在用户已经在目标站点上时不会修改位置。

标签: javascript jquery


【解决方案1】:

因为每次加载页面时您的代码都包含在jQuery(document).ready(function() { 中,所以会调用您的window.location.replace 并开始页面刷新。

我确实注意到您的网站上有一个语言下拉菜单,所以不妨试试类似的方法:

<select class="foo" id="bar" onchange="dropdownChange()"> //options here </select>

和你的 javscript 到

function dropdownChange() { var dropdown = document.getElementById("bar"); var language = dropdown.options[dropdown.selectedIndex].value; if (language === "en-US") { window.location.replace("/test"); } }

【讨论】:

  • 我没有考虑过使用下拉菜单,但现在您已经提到了,这绝对是完美的,因为该功能已经内置在平台中。我看看上面这段代码,会不会选择下拉选项而不是自己重定向?
  • @matt136 您必须确保下拉菜单的值设置为您在 if 语句中检查的值,但代码只会在选择不同的值后刷新页面.
【解决方案2】:

我在 chrome 中尝试了您的链接,但看不到多次加载。 你用的是什么浏览器?

【讨论】:

  • 这不是答案,请使用评论部分
  • 对不起,我太笨了,目前它只适用于“en-US”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
  • 2013-07-31
  • 1970-01-01
相关资源
最近更新 更多