Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript事件函数在每次页面加载时运行一个_Javascript - Fatal编程技术网

JavaScript事件函数在每次页面加载时运行一个

JavaScript事件函数在每次页面加载时运行一个,javascript,Javascript,我在页面的HTMLbody部分中放置了一个事件javascript函数 <script type="text/javascript"> function CookiebotCallback_OnAccept() { window.location.reload(true); if (Cookiebot.consent.statistics) { } } </script> 函数Cook

我在页面的HTML
body
部分中放置了一个事件javascript函数

<script type="text/javascript">

    function CookiebotCallback_OnAccept() {
        window.location.reload(true);
        if (Cookiebot.consent.statistics)
        {

        }
    }
</script>

函数CookiebotCallback_OnAccept(){
window.location.reload(true);
如果(Cookiebot.Approve.statistics)
{
}
}

此脚本会导致无限刷新,因为每次加载页面时函数都会运行。如何使此函数仅在调用时运行,而不是在每次页面加载时自动运行?

我的解决方案是在
localStorage
sessionStorage
中创建一个标志变量,然后检查该变量是否已经存在,跳过调用reload

<script type="text/javascript">   
    function CookiebotCallback_OnAccept() {
      if(!sessionStorage.getItem('isReloaded')) {
        sessionStorage.setItem('isReloaded', true);

        window.location.reload(true);

        if (Cookiebot.consent.statistics)
        {

        }
      }
    }
</script>
// you can also clear the variable to trigger the reload again.
// By: sessionStorage.removeItem('isReloaded');
// Note: the sessionStorage will be cleared each time you close the browser, 
// while localStorage is only by uninstalled the browser or manually.

函数CookiebotCallback_OnAccept(){
如果(!sessionStorage.getItem('isReloaded')){
sessionStorage.setItem('isReloaded',true);
window.location.reload(true);
如果(Cookiebot.Approve.statistics)
{
}
}
}
//您还可以清除该变量以再次触发重新加载。
//作者:sessionStorage.removietem('isReloaded');
//注意:每次关闭浏览器时,会话存储将被清除,
//而localStorage只能通过浏览器卸载或手动卸载。

我的解决方案是在
localStorage
sessionStorage
中创建一个标志变量,然后检查该变量是否已经存在,跳过调用reload

<script type="text/javascript">   
    function CookiebotCallback_OnAccept() {
      if(!sessionStorage.getItem('isReloaded')) {
        sessionStorage.setItem('isReloaded', true);

        window.location.reload(true);

        if (Cookiebot.consent.statistics)
        {

        }
      }
    }
</script>
// you can also clear the variable to trigger the reload again.
// By: sessionStorage.removeItem('isReloaded');
// Note: the sessionStorage will be cleared each time you close the browser, 
// while localStorage is only by uninstalled the browser or manually.

函数CookiebotCallback_OnAccept(){
如果(!sessionStorage.getItem('isReloaded')){
sessionStorage.setItem('isReloaded',true);
window.location.reload(true);
如果(Cookiebot.Approve.statistics)
{
}
}
}
//您还可以清除该变量以再次触发重新加载。
//作者:sessionStorage.removietem('isReloaded');
//注意:每次关闭浏览器时,会话存储将被清除,
//而localStorage只能通过浏览器卸载或手动卸载。

无需处理操纵cookie或任何其他黑客解决方案。JavaScript提供了一些本机事件侦听器,用于验证文档是否已成功加载。基本上,您有三种选择:

Inline HTML example
1. <body onload='fooBar()'>

Native DOM events that can be invoked within an HTML snippet,
or more preferably, within there own parent function to offer
more fine grained control over invocation.
2. document.onload = ()=>
3. window.onload = ()=> 
    i.e:
        const foo = () => document.onload
        const bar = () => window.onload

     Invoking them anywhere within you code base as necesary without 
     rigidly coupling your JavaScript code within your HTML

无需处理操纵cookie或任何其他黑客解决方案。JavaScript提供了一些本机事件侦听器,用于验证文档是否已成功加载。基本上,您有三种选择:

Inline HTML example
1. <body onload='fooBar()'>

Native DOM events that can be invoked within an HTML snippet,
or more preferably, within there own parent function to offer
more fine grained control over invocation.
2. document.onload = ()=>
3. window.onload = ()=> 
    i.e:
        const foo = () => document.onload
        const bar = () => window.onload

     Invoking them anywhere within you code base as necesary without 
     rigidly coupling your JavaScript code within your HTML


这是那些脚本标记中唯一的代码吗?调用的
CookiebotCallback\u OnAccept
在哪里?如果需要帮助,请提供所有代码,此代码没有任何作用。我尝试在Codepen上复制您的问题,但没有遇到任何问题。这里有一个钢笔的链接:请你把剩下的代码贴出来好吗?调用的
CookiebotCallback\u OnAccept()
在哪里?然后,如果调用它,您会立即调用
window.location.reload(true)。你的意思是在你的
if
语句中添加位吗?你知道逻辑
if(Cookiebot.approve.statistics)
永远不会正确运行吗?这是那些脚本标记中唯一的代码吗?调用的
CookiebotCallback\u OnAccept
在哪里?如果需要帮助,请给我们所有代码,这个没有任何作用我试着在Codepen上复制你的问题,但没有遇到任何问题。这里有一个钢笔的链接:请你把剩下的代码贴出来好吗?调用的
CookiebotCallback\u OnAccept()
在哪里?然后,如果调用它,您会立即调用
window.location.reload(true)。你的意思是在你的
if
语句中添加位吗?你知道逻辑
if(Cookiebot.approve.statistics)
永远不会正确运行吗?你知道逻辑
if(Cookiebot.approve.statistics).
永远不会正确运行吗?你解决了他的问题,但只是指出了它。@Popmedic我刚刚复制了作者的代码,我认为它应该正常运行,因为
JS
是异步的:D.p/s:@Popmedic你可以自己试试,把
sessionStorage.setItem('thisIsSession','should be fine')
放在
.reload()
code之后,然后您可以在
会话存储
中找到它,甚至可以重新加载浏览器。p/s:但我同意您的看法,我们不应该将。
reload()
放在函数的开头。他只是运气好,因为函数没有ajax/promise调用:你知道逻辑
if(Cookiebot.approve.statistics)…
永远不会正确运行吗?你解决了他的问题,但只是指出了它。@Popmedic我刚刚复制了作者的代码,我认为它应该正常运行,因为
JS
是异步的:D.p/s:@Popmedic你可以自己试试,把
sessionStorage.setItem('thisIsSession','should be fine')
放在
.reload()
code之后,然后您可以在
会话存储
中找到它,甚至可以重新加载浏览器。p/s:但我同意您的看法,我们不应该将。
reload()
放在函数的开头。他只是运气好,因为函数没有ajax/promise调用:D