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