最近做考试系统,一些效果存在一些兼容性问题,尤其是ie6,本人js不是很好,通过查资料解决了这些问题,现总结下:

关于onbeforeunload问题:

考试时离开页面需要提示,但是直接用此方法或onunload,我测试在谷歌浏览器不行。如下代码可解决:

  1. window.onbeforeunload = function (e) {
  2. e = e || window.event;
  3. // For IE and Firefox prior to version 4
  4. if (e) {
  5. e.returnValue = '确定退出吗?';
  6. }
  7. // For Safari
  8. return '确定退出吗?';
  9. };

但是当你需要提交表单时,或者ajax什么的,它也会提示,这样肯定是不行的。于是在页面中加入一个隐藏标签,例如<input type="hidden" id="hidsub" value=""/>

通过获取他的值来判断是否执行onbeforeunload方法。于是代码变成这样:

  1. window.onbeforeunload = function (e) {
  2. e = e || window.event;
  3. var flag = document.getElementById('hidsub').value
  4. if(!flag){
  5. if (e) {
  6. e.returnValue = '确定退出吗?';
  7. }
  8. return '确定退出吗?';
  9. }
  10. };

当然你要在相应的a标签上加入 onclick="document.getElementById('hidsub').value='1';func();"让隐藏域获取到值,这样就不会执行onbeforeunload了。

还有问题!一般我们做一些点击事件会在a标签加上href='javascript:void(0);' 在ie下,onbeforeunload也会执行。具体我也不说了,网上可以查到很多。

这时如果换成href='#'就不会执行了,但是会跳到锚点,这也是不行的。可以改成href='###'或href='#this'。还可以在a标签onclick事件里加入return false;来阻止onbeforeunload。

另外还有一个问题,就是iframe里如果刷新父页面使用parent.location.reload();会在firefox里造成死循环。这时只需改成parent.location.reload(true);就可以了。

原文:http://blog.csdn.net/ameol/article/details/9021071

做考试系统用到的关于onbeforeunload一些兼容性问题的更多相关文章

  1. 分享一个LiteDB做的简单考试系统辅助工具

    凌晨,被安排在公司值班,因为台风“灿鸿”即将登陆,风力太大,办公楼,车间等重要部分需要关注.所以无聊,那就分享一下,今天给朋友临时做的一个小的考试系统辅助工具吧.其实非常小,需求也很简单,但是可以根据 ...

  2. 基于ssh框架的在线考试系统开发的质量属性

    我做的系统是基于ssh框架的在线考试系统.在线考试系统有以下几点特性:(1)系统响应时间需要非常快,可以迅速的出题,答题.(2)系统的负载量也需要非常大,可以支持多人在线考试(3)还有系统的安全性也需 ...

  3. zzzzw_在线考试系统①准备篇

    在弄完购物系统之后,小博也了解了解怎么用struts这个框架捣鼓一个在线考试系统 购物系统用的是MVC模式,现在这个struts2原理上也是基于MVC模式的.那么要做这个东西之前先了解一下难点在哪里 ...

  4. smarty练习:考试系统

    考试系统 (0607) 做一个类似于驾校考试的系统,可以选择要考试试题类型,选好后进入考试页面 使用的数据库表格:timu(题目)表,xuanxiang(选项)表,shiti(试题)表,shititi ...

  5. 基于Web在线考试系统的设计与实现

    这是一个课程设计的文档,源码及文档数据库我都修改过了,貌似这里复制过来的时候图片不能贴出,下载地址:http://download.csdn.net/detail/sdksdk0/9361973   ...

  6. Django考试系统(1)

    好久没更过博客了,菜是原罪.毕业设计快做完了,第一次独立做的项目(考试系统),自己摸索着做的,以前学习的好多东西都用上了,但是也都忘了,完成设计的途中又一步步的捡起来了(不知道现在还记没记得).最近着 ...

  7. 基于SSM的在线考试系统

    本系统功能非常完善,页面美观大方,技术新颖,选用主流数据库Mysql,表数量及结构适当,如果你需要做在线考试或者其它考试类系统,这个系统将非常有用. 其实,任何考试系统,无非试题不一样,所以如果你是做 ...

  8. 基于B/S架构的在线考试系统的设计与实现

    前言 这个是我的Web课程设计,用到的主要是JSP技术并使用了大量JSTL标签,所有代码已经上传到了我的Github仓库里,地址:https://github.com/quanbisen/online ...

  9. WSB功能分解(在线考试系统)

    对在线考试系统进行WSB功能分解至三级子功能,并且预估每个子功能所需时间. 一级功能 二级功能 三级功能 预估花费时间(小时) 考试管理员功能模块 培训计划 查询 1.5 重置 1 新增计划 1.5 ...

随机推荐

  1. SimpleCV install and "You need the python image library to save by filehandle"

    2015年5月3日 22:15:43 在win7下安装了python.simplecv,试着运行simplecv官网第一个hello world程序结果报错,提示说%python%/lib/site- ...

  2. 洛谷 P1184高手之在一起 题解

    题目传送门 那位高手是谁啊?@jxpxcsh  QWQ. 这道题数据特别水,所以直接使用O(n*m),每读进一个m内的字符串,就扫一遍n的字符串.但注意地点字符串中有可能会有空格,所以这时候就要请出g ...

  3. IEEEXtreme 10.0 - Painter's Dilemma

    这是 meelo 原创的 IEEEXtreme极限编程比赛题解 Xtreme 10.0 - Painter's Dilemma 题目来源 第10届IEEE极限编程大赛 https://www.hack ...

  4. day4 正则表达式(regular)

    正则(regular),要使用正则表达式需要导入Python中的re(regular正则的缩写)模块.正则表达式是对字符串的处理,我们知道,字符串中有时候包含很多我们想要提取的信息,掌握这些处理字符串 ...

  5. JS 数据类型转换以其他

    JavaScript 是一种弱类型的语言,也就是没有类型限制,变量可以随时被赋予任意值. 同时,在程序运行过程中,类型会被自动确认的.因此,这就是涉及到数据的类型转换.在 JS 的世界中,数据类型转换 ...

  6. Ubuntu 18.04 更改静态IP

    2018年4月26日,ubuntu 18.04发行,第一时间下载安装了SERVER版本.使用VM14版本的虚拟机,开始使用DHCP获得IP地址,没有意外,可以直接上网.然而在更改VM的网络模式为桥接模 ...

  7. mysql 笔记(一)

    mysql 笔记 预留 mysql> use mysql; mysql> grant all privileges  on *.* to root@'%' identified by &q ...

  8. EOJ 3262 黑心啤酒厂

    最大公约数. 计算$x$与$i$的最小公倍数,就是这些人至少需要喝几杯,最小公倍数除以$x$就是要买几瓶. #include <cstdio> #include <cmath> ...

  9. 执行Shell脚本的4种方法及区别介绍(转)

    原文地址: http://www.jb51.net/article/66824.htm 执行shell脚本有以下几种方式 ###1.相对路径方式,需先cd到脚本路径下 [root@banking tm ...

  10. 【BZOJ 3442】 3442: 学习小组 (最大费用流)

    3442: 学习小组 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 403  Solved: 193 Description [背景] 坑校准备鼓励学生 ...