重写alert方法

tianpan000 2012-06-15 07:09:53
js中alert方法:
如果代码:
alert(1);
alert(2);
执行到1时,会弹出一个1的对话框,后台js代码就停留在alert(1)这里,要点击确定后,才会弹出2的对话框。
我现在想实现自己的方法:
alertMe(1);
alertMe(2);
我重写后,发现这个同步问题不好解决。当我执行时,代码会连续弹出1和2.我想达到js自带的alert方法暂定的效果。
在出现1后,没有点击确定,就不运行alertMe(2);有什么方法没?
请高手指点。。。在线等待。。。
...全文
492 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
最后一个菜鸟 2012-06-16
  • 打赏
  • 举报
回复
只是提供另外一种思路。将对话框的实现单例,如果第二次调用时发现当前对话框显示,添加到一个队列中。当确定按钮点击时,从队列中取一个元素,执行显示。但是这种方法只会阻塞alert的执行,而不会阻塞其他操作的执行。
ABCDEF 2012-06-16
  • 打赏
  • 举报
回复
用confirm(123);
hch126163 2012-06-16
  • 打赏
  • 举报
回复
系统对话框会阻隔线程。

自己要达到那样的效果,用 回调函数来解决
tianpan000 2012-06-16
  • 打赏
  • 举报
回复
听了大家的解释,受益匪浅。非常感谢。
我在考虑:
如果用回调函数。
我执行我自己重新的alertMe方法。这里是是只有两个。
但是三个alertMe。四个,五个,更多就不能达到效果。
怎不能五个就,嵌套五层吧。
我现在就纳闷,js自带的alert方法怎么样做到阻塞的。
有谁能实现原理,能指点下吗?
蓝色_冰点 2012-06-15
  • 打赏
  • 举报
回复
window.alert 阻塞,是浏览器决定的
比如chrome,如果发现连续多次alert,可以让用户直接禁到alert对话框
js本身是没有阻塞的
如#4所说的一样,可以通过回调实现,这样你的alertMe应该有类似的参数:
alertMe("message",closeHandle);

其中的closeHandle就是关闭alertMe弹出对话框后将被调用的函数
具体怎么实现自己琢磨吧
001007009 2012-06-15
  • 打赏
  • 举报
回复
回调函数,当第一个alert有操作之后,再执行第二个alert
tianpan000 2012-06-15
  • 打赏
  • 举报
回复
有什么方法阻塞,js方法执行。
不要推荐使用循环来实现。
tianpan000 2012-06-15
  • 打赏
  • 举报
回复
请问,你知道js内置方法alert()内置阻塞是怎么样实现的。
在弹出第一个alert,js会阻塞。
这又是怎么实现的。有什么方法实现?
蓝色_冰点 2012-06-15
  • 打赏
  • 举报
回复
因为JS是非阻塞模式的,所以解决办法只能是在第一个alertMe关闭后再执行第二个alertMe

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧