如何在网页中只运行一次JavaScript?

如何在网页中只运行一次JavaScript?,javascript,html,Javascript,Html,所以我正在尝试为我的网页实现一个自动语言转换器。 但它会在页面运行时不断刷新页面。 我只想运行这个脚本一次,这样它就不会永远刷新我的页面 我有这个剧本: var language = navigator.language || navigator.userLanguage; language = language.substring( 0, 2 ); if (language == "pt" || "pt-BR" || "pt-PT&quo

所以我正在尝试为我的网页实现一个自动语言转换器。 但它会在页面运行时不断刷新页面。 我只想运行这个脚本一次,这样它就不会永远刷新我的页面

我有这个剧本:

var language = navigator.language || navigator.userLanguage;

language = language.substring( 0, 2 );

if  (language == "pt" || "pt-BR" || "pt-PT"){
window.location.href = "index.html";
}

else {
window.location.href = "indexEN.html";  //
}

其名称为:

        <!-- Auto Language -->
        <script src="js/language.js"></script>

不知道这是否是最佳做法,但您可以使用localStorage

if((localStorage.getItem('pageLoaded') ?? 'true') === 'true') {
   alert('dsds')
   localStorage.setItem('pageLoaded', 'false')
}

此警报将执行一次

刷新页面是代码的一部分,如您在此处所见

var language = navigator.language || navigator.userLanguage;// get users default language

language = language.substring( 0, 2 );

if  (language == "pt" || "pt-BR" || "pt-PT"){
window.location.href = "index.html";
}
else {
window.location.href = "indexEN.html";  //loading another html file for users who use english
}
因此,由于您正在重新加载另一个html文件,您的javascript将再次运行。解决这个问题的一个办法是将你的网页变成一个SPA(单页应用程序)。这样您就不必重新加载任何内容(包括javascript)。您还可以在不实际加载新文件的情况下更改页面内容和标题。SPA通常在react中完成(使用react路由),但您也可以制作香草JS。
把它想象成一个无限循环,比如
while(true){}
——你需要做的是在某个点打破循环。要打破这个循环,您需要添加一个检查,以确保您不在预期页面上。这将停止不断的重定向

var language = navigator.language || navigator.userLanguage

language = language.substring(0, 2)

var ptPage = 'index.html'
var enPage = 'indexEN.html'
// you're calling substring, so no need to check the variants
// your check was also incorrect :)
if (language == "pt") {
  if (window.location.pathname !== '/' + ptPage) {
    window.location.href = ptPage
  }
} else if (window.location.pathname !== '/' + enPage) {
  window.location.href = enPage
}

这是脚本的完整代码吗?因为你的表演不会永远持续下去?啊,我明白了。实际上,重定向上有一个无限循环。可能。没有关系,只是给你(和一些回答者)一个提示:
如果(语言==“pt”| |“pt BR”|“pt pt pt”)
不做你认为它做的事……肯定会是关于你所说@Gerardofutadobop的另一个调试细节,但它可以解析url以了解加载了哪个“索引”,并在逻辑中相应地退出,而无需重定向。参见@ZacAnger solution,它就像一个无限循环。他有同样的行为。但更正确的是,没有“断点”的“循环引用”。