[問題] 關於 chrome37+ 不支援showModalDialog

看板Ajax作者 (心中在下雨)時間10年前 (2015/01/09 18:02), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
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://www.ptt.cc/bbs/Ajax/M.1420797745.A.787.html

01/09 19:31, , 1F
能用 sync hang 執行住的大概只有 ajax 吧
01/09 19:31, 1F

01/09 19:32, , 2F
用一個server幫助或許有可能?
01/09 19:32, 2F

01/09 19:33, , 3F
就用windows open開一個新視窗往server送return value
01/09 19:33, 3F

01/09 19:34, , 4F
再向server用sync ajax拿回傳值?
01/09 19:34, 4F
文章代碼(AID): #1KhwSnU7 (Ajax)
文章代碼(AID): #1KhwSnU7 (Ajax)