[问题] 关于 chrome37+ 不支援showModalDialog

楼主: no1kk (心中在下雨)   2015-01-09 18:02:23
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.... 一直往上 @@
感谢各位!!
作者: mmis1000 (秋月恋枫)   2015-01-09 19:31:00
能用 sync hang 执行住的大概只有 ajax 吧用一个server帮助或许有可能?就用windows open开一个新视窗往server送return value再向server用sync ajax拿回传值?

Links booklink

Contact Us: admin [ a t ] ucptt.com