仅运行一次事件

时间:2011-06-12 14:33:22

标签: javascript jquery

我有代码检查浏览器,并且每次刷新页面时它都在运行。是否可以在每次访问时只运行一次,因此如果我刷新或通过链接转到该页面,则忽略代码。感谢

    <script type="text/javascript">
            if($.browser.msie && $.browser.version=="8.0" || $.browser.msie && $.browser.version=="7.0") 
            alert("Please upgrade your browser to at least version 8.0 in order to use all the features of this site.\n\nThank you.");
    </script>

由darin提供的更新代码:

<script type="text/javascript">
    var date = new Date(); date.setTime(date.getTime() + (30 * 60 * 1000)); $.cookie("explorer", "foo",{ expires: date });
        var cookie = $.cookie('explorer');

    if (cookie == null) {
        // the cookie is not present => you may do the checks
        if ($.browser.msie && $.browser.version == '8.0') {
            // set the cookie so that the next time the user visits this page
            // he doesn't get the alert message
            $.cookie('explorer', 'true');
            alert("Please upgrade your browser to at least version 8.0 in order to use all the features of this site.\n\nThank you.");
        }
    }
 </script>

虽然

但警报仍未解雇

2 个答案:

答案 0 :(得分:3)

你必须设置一个cookie,记住你看到的最新版本是什么,只有当你没有看到cookie或者版本发生了变化但仍然不是你想要的时候才会唠叨用户。


旁注:您的支票,如引用,将使用IE8唠叨他们至少需要使用IE8的人。看起来很奇怪。如果你真的想要浏览器嗅探,也许:

if ($.browser.msie && parseFloat($.browser.version) < 8) {
    // Do whatever you're going to do with them having IE < 8.0
}

偏离主题:这种唠叨的弹出窗口已经过时了。相反,如果您的网站的某些部分在没有某些浏览器功能的情况下无法运行,请使用功能检测(而不是浏览器嗅探)来检查它们并仅禁用相关部分(可能带有消息) ,当用户试图使用您网站的那部分时,说明为什么他们不能)。您可以找到许多有用的功能测试herehere。另请参阅jQuery.support

答案 1 :(得分:1)

您可以使用Cookie。因此,您可以检查是否存在某些自定义cookie,如果不存在则显示该消息并发出cookie,以便下次不显示该消息。这是一个很好的plugin for jquery,可以简化读写cookie:

<script type="text/javascript">
    var cookie = $.cookie('some_cookie_name');
    if (cookie == null) {
        // the cookie is not present => you may do the checks
        if ($.browser.msie && $.browser.version == '7.0') {
            // set the cookie so that the next time the user visits this page
            // he doesn't get the alert message
            $.cookie('some_cookie_name', 'true');
            alert("Please upgrade your browser to at least version 8.0 in order to use all the features of this site.\n\nThank you.");
        }
    }
</script>