当页面首次加载且之后不再加载时,触发事件。

3
这个想法是我想在页面加载时使用jQuery的 $('a').trigger('click'); 来提示用户更改密码。
我面临的问题是每次加载页面都会触发事件。
理想情况下,我希望每个登录会话只触发一次事件。最好的方法是什么呢?在触发事件时向数据库发送一个值,然后检查数据库中的值是否已经被触发了?这是我的想法,但我感觉可能有更快更简便的方法。
谢谢!

你可以给机器写一个cookie,用户退出或关闭浏览器时可以清除它。在页面加载时检查cookie,如果不存在则触发点击事件。否则使用php在第一次加载后设置会话变量 - 如果会话变量不存在,则输出js代码以触发点击事件,然后设置变量。 - Pete
客户端?还是服务器端?如果您想要在客户端使用,可以使用sessionStorage。 - skip405
3个回答

2
如果您想使用会话,可以尝试以下方法:
<?php if (!isset($_SESSION['saw_js'])): ?>
    <script>
        $('a').trigger('click');
    </script>
<?php endif; $_SESSION['saw_js'] = true; ?>

基本上,当用户登录时,$_SESSION ['saw_js']未设置,因此会打印您的JS代码。然后,它将不再存在,因为该变量已经设置。

你的代码是正确的,为什么原帖作者没有回复呢? - Pratik Joshi
嘿,谢谢。我只写了20分钟,我想我们必须给他一些时间 :) - PJ Bergeron
对于这种类型的代码 "if not set, else set",我喜欢这样做:<?php if(!isset($once) && $once=True){ /* 做一些事情 */} - DylannCordel

1

这并不优美,但这只是一个例子。

我不知道您的代码结构是什么样的。

//variable sett by result from database
<? $ask_new_password = true; ?>

var passwordRequest = <?=$ask_new_password;?>;

if(passwordRequest){

     $('a').trigger('click');
}

1

理想情况下,我希望在每个登录会话中仅触发一次事件。

那么……使用会话吗?

if(!array_key_exists('already_changed', $_SESSION)){
    //do something

谢谢大家,我想饼干或会话应该可以胜任! - Richard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接