浏览器JS环境中,如何异步使用原生confirm?

mc_zone
  • 282

简单说下场景需求:

有一个视频培训网站的需求,在播放视频时间隔一段时间就弹出确认框保证用户正在观看,在多少秒之内如果用户没有点击确认就自动下线,后续的观看不计入学习时长。类似于长时间不活动下线的处理。

现在遇到的问题是,网站中有优酷等站的第三方视频,(有flash的版本也有html5 video的)在全屏播放时,自己写的modal对话框无法弹到视频前面。反复实验只有原生的confirm可以弹到最前面。但是confirm是同步阻塞的,也就是说弹出的同时js暂停了执行,没法做计时和下线,和服务器通信等等处理了。有没有好的办法能够解决这一问题。

回复
阅读 5.6k
3 个回答
✓ 已被采纳

给 Flash 所在的 <object> 对象添加属性 wmode="opaque" 可以让 modal 跑到视频前面

windoww.confirm貌似是用的dialog,浏览器的实现就是同步的而不是异步的,所以本身可能就不能异步..

可以考虑的方法有:

  1. 让视频在confirm前最小化。youku就是这么做的吧,反正老是提示登陆的时候弹出来
  2. 用其他语言实现confirm,而不是javascript。。试试flash,silverlight之类的能不能搞定。不行自己搞个浏览器插件弹confirm呗。。。

我能想到的方法就这些,供参考

凤梨豪
  • 437

唔,之前理解错了。

看来没有更好的办法。ls说的隐藏视频感觉可以。

宣传栏