HTML5技术

移动端开发(使用webuploader上传图片,客户端交互,修改alert弹窗等) - 可口可樂(3)

字号+ 作者:H5之家 来源:H5之家 2016-01-20 16:00 我要评论( )

var wConfirm = window.confirm;window.confirm = function (message, trueFn , flaseFn ) { try { var iframe = document.createElement("IFRAME" );iframe.style.display = "none" ;iframe.setAttribute( "src",

var wConfirm = window.confirm; window.confirm = function (message,trueFn,flaseFn) { try { var iframe = document.createElement("IFRAME"); iframe.style.display = "none"; iframe.setAttribute("src", 'data:text/plain,'); document.documentElement.appendChild(iframe); var alertFrame = window.frames[0]; var iwindow = alertFrame.window; if (iwindow == undefined) { iwindow = alertFrame.contentWindow; } var result = iwindow.confirm(message);     if(result){       trueFn(); } else{ flaseFn(); } iframe.parentNode.removeChild(iframe); } catch (exc) { return wConfirm(message); } }

3.由上面的alert弹窗 衍生而出的问题

项目中遇到 

在 ios中 alert弹窗会先执行

 

例如 

alert(1);

console.log(2);

alert(3);

 

ios会先弹出1 然后弹出3 最后才输出2

 

所以就会遇到一些情况

在alert语句前 本来是想让某些元素隐藏 或者 改变样式

但实际上ios会先弹出alert窗 但想改变的元素并还没有改变样式

只会在点击alert窗后才会执行

 

很蛋疼对不对?!

解决方法如下!!!!

将alert弹出的语句放在setTimeout里面

setTimeout(function(){

    alert(3);

},0)

 

原理是 setTimeout会在js空闲之后才会执行里面的函数

所以把弹窗放进里面 就能确保alert之前的语句都执行完毕了(不知道说得对不对 这是由我自己总结出来的 若错误 求轻喷)

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • [移动端] IOS下border-image不起作用的解决办法 - 小路_同学

    [移动端] IOS下border-image不起作用的解决办法 - 小路_同学

    2017-05-02 12:04

  • 【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

    【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

    2017-04-30 16:00

  • 对于Bootstrap的介绍以及如何使用 - novai-L

    对于Bootstrap的介绍以及如何使用 - novai-L

    2017-04-29 09:00

  • 在Delphi下使用迅雷APlayer组件进行免注册开发 - Delphi力量

    在Delphi下使用迅雷APlayer组件进行免注册开发 - Delphi力量

    2017-04-28 15:00

网友点评