javascript - js关于利用modal模拟confirm的阻塞问题
阿神
阿神 2017-04-11 12:04:59
[JavaScript讨论组]

大家好,本人最近想重写js的confirm界面,然后用到了bootbox.js这种模拟弹出框的插件,它的基本写法如下:

bootbox.confirm('确定无误吗?', function(result){});

然后把后面执行步骤写到回调函数就可以了,十分方便,但是js的confirm有着阻塞浏览器的作用,而bootbox只能把后续步骤写到回调函数里边,后面如果不再用bootbox的话删除会有那么一点点麻烦。。。
所以我想问一下有没有方法可以修饰bootbox达到阻塞的作用,类似效果如下:

$('p').on('click',function(){
    //不点击确定取消不能执行后续的代码...
    bootbox.confirm('确定无误吗?', function(result){if(!result)return});
    //后续代码写到这个位置
    code...
})

本人菜鸟看到js发展到es6以为这个问题可以有新的简单的写法,本来的想法也不是为了走极端,非常感谢每位大神的回答,我就选个最长的采纳吧。。

阿神
阿神

闭关修行中......

全部回复(6)
天蓬老师

首先这部分有问题

 bootbox.confirm('确定无误吗?', function(result){if(!result)return});//注
 //后续代码写到这个位置
 code...

注: 此处需要返回值, 并且在下方判断其返回值true|false, 是否执行下面的代码.

再备注: 回调函数为两个, 点击确定的回调, 点击取消的回调.//这样写就可以绕过阻塞.

我想到一个办法, 就是
var i = 0; while(true){i++; if(i > 50)break;}
点到为止, 比较low, 并且性能低, 但是为了阻塞拼了.

PHP中文网

所谓达到阻塞的作用,就是点击confirm的取消,确定按钮才执行后面的代码,这不就是回调函数的作用吗?把你的后续代码写到回调函数里不就行了?

你如果觉得以后删除这个代码有点麻烦,就把回调函数独立声明,到时候删除代码的时候,可以只删除modal的调用就好了

PHP中文网

没有办法做到真正意义上是阻塞运行
唯一能做到的就是把代码运行代码分块,再用户操作后进行回调调用
或许你可以用递归或者循环的方式来模拟,但正如前面所说,并不是真正意义上的阻塞运行

巴扎黑

把 code 写到回调里

巴扎黑

不可能,必须用回调。

很多东西都是机制规定的,不可能任意修改。

高洛峰

没办法。。。。

说没办法竟然还没举报了。 难道谁有办法,这本身就是一个不成立的命题,取巧的方式只会误导题主
什么while(true) ,再开玩笑嘛?
老老实实回调中写代码吧

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号