作者no1kk (心中在下雨)
看板Ajax
标题[问题] 关於 chrome37+ 不支援showModalDialog
时间Fri Jan 9 18:02:23 2015
chrome 在 ver.37 之後开始不支援 window.showModalDialog 这个功能
由於很多原因,所以我被叫去修这个 bug (原程式不是我写的,而且很庞大)
目前我打算的作法是,当侦测到 typeof(window.showModalDialog) != 'function' 时
用一个功能相同的 function 去取代他
这样我只需要在一个地方加这些东西,不需要去处理所有用到这个 function 的地方
但是!! 原本的 showModalDialog 功能会将整个程式 hold 在那一行
(类似 alert 或 confirm)
直到 showModalDialog 传回值为止
我无论用什麽方法,都会变成同步处理,叫出对话框的同时程式已经跑到下一行了
就算後续要执行的工作,我使用 callback 的方式来处理
但是 function 的上一层也已经往後面执行了
例:
var a = function(){
... do something ...
var x = b();
... do something2 ...
return x;
}
var b = function(){
... do something3 ...
window.showModalDialog(....);
... do something4 ...
return value;
}
a();
如上,就算我将 do something4 以 callback 的形式待 showModalDialog 完成後再执行
但是 do something2 已经不会等我的往下做了
所以,是否有办法让程式整个 hold 住,等我完成某事後再继续
还是说,我只能从 showModalDialog 的位置开始往上找
找谁呼叫了 b 然後谁呼叫了 a.... 一直往上 @@
感谢各位!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.81.39.146
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Ajax/M.1420797745.A.787.html
1F:→ mmis1000: 能用 sync hang 执行住的大概只有 ajax 吧 01/09 19:31
2F:→ mmis1000: 用一个server帮助或许有可能? 01/09 19:32
3F:→ mmis1000: 就用windows open开一个新视窗往server送return value 01/09 19:33
4F:→ mmis1000: 再向server用sync ajax拿回传值? 01/09 19:34