最佳解答者
showModalDialog 強制視窗 問題(C#,asp.net)

問題
-
我有兩個網頁 Default.aspx 跟 Default2.aspx
由 Default.aspx 點選按鈕,開窗Default2.aspx在 Default2.aspx 有一個檔案上傳 FileUpload 跟 DropDownlist
點選FileUpload 時無反應,但是點了DropDownList 並選其他值 ,這時FileUpload 又可以正常運作了
(沒有 postback !!!!)
程式範例https://
docs.google.com/file/d/
0B1XxIr6Ve-glMXNWWmNTaks0S3M/edit
我不懂為什麼,沒有任何錯誤訊息
瀏覽器Chrome 版本26.0.1410.43 m
Visual Studio 2010
Default.aspx程式碼
<script> //開窗 (showModalDialog 強制視窗)function openWindow( url) { var OpenPage = window.showModalDialog(url); } </script> <asp:LinkButton ID="btnTOPICSEQNO" Width="35px" runat="server" CssClass="btntype3">編輯</asp:LinkButton> protected void Page_Load(object sender, EventArgs e) { string jsUrl = "Default2.aspx"; btnTOPICSEQNO.Attributes["onclick"] = "openWindow( '" + jsUrl + "');return false;"; }
Default2.aspx 程式碼
<asp:FileUpload ID="FileUpload1" runat="server" /> <asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem Text="text" Value=""></asp:ListItem> <asp:ListItem Text="text2" Value=""></asp:ListItem> <asp:ListItem Text="text3" Value=""></asp:ListItem> </asp:DropDownList>
解答
-
恩...看起來像是 Chrome 26 版的 bug, 請見:
- https://code.google.com/p/chromium/issues/detail?id=225365
- https://bugs.webkit.org/show_bug.cgi?id=113777
看 issue 的討論串,似乎已經修復,但什麼時候會推出新的版本,我看不出來就是了。
還是建議 showModalDialog 可以不要用就不要用,改使用 類似 jQuery 的 dialog 套件,比較 modern, 也會比較少問題,請參考:
http://msdn.microsoft.com/zh-tw/magazine/ff608210.aspx您這問題,目前看起來是沒有直接的解決方式,一個就是等 Chrome 改版把問題修掉,否則一樣要改,就可能要大改了。或是不用 showModalDialog,直接在全域覆寫 window.showModalDialog 的 function, 改用 window.open 搭配鎖定 window 的方式,來當暫時解。
有一定的風險,但至少算是比較簡單的 work-around 。
授人以魚,三餐之需;授人以漁,終生之用。
希望各位發問的朋友,得到的是如何釣魚的知識。之後也可以分享給別人,釣魚的知識。而不是肚子餓了,就上來討魚吃。
若您的程式碼有SQL injection的問題,在修改完畢之前,我不願意給您任何解答。因為解決了您的程式問題,造成更大的系統漏洞問題,還不如讓程式壞掉。
請參考:SQL injection簡介與解決方式
常用資源參考:
小弟的blog: In 91,wiki: my wiki- 已提議為解答 No.18MVP, Moderator 2013年4月10日 下午 02:07
- 已標示為解答 wayne7813 2013年4月11日 上午 01:38
所有回覆
-
恩...看起來像是 Chrome 26 版的 bug, 請見:
- https://code.google.com/p/chromium/issues/detail?id=225365
- https://bugs.webkit.org/show_bug.cgi?id=113777
看 issue 的討論串,似乎已經修復,但什麼時候會推出新的版本,我看不出來就是了。
還是建議 showModalDialog 可以不要用就不要用,改使用 類似 jQuery 的 dialog 套件,比較 modern, 也會比較少問題,請參考:
http://msdn.microsoft.com/zh-tw/magazine/ff608210.aspx您這問題,目前看起來是沒有直接的解決方式,一個就是等 Chrome 改版把問題修掉,否則一樣要改,就可能要大改了。或是不用 showModalDialog,直接在全域覆寫 window.showModalDialog 的 function, 改用 window.open 搭配鎖定 window 的方式,來當暫時解。
有一定的風險,但至少算是比較簡單的 work-around 。
授人以魚,三餐之需;授人以漁,終生之用。
希望各位發問的朋友,得到的是如何釣魚的知識。之後也可以分享給別人,釣魚的知識。而不是肚子餓了,就上來討魚吃。
若您的程式碼有SQL injection的問題,在修改完畢之前,我不願意給您任何解答。因為解決了您的程式問題,造成更大的系統漏洞問題,還不如讓程式壞掉。
請參考:SQL injection簡介與解決方式
常用資源參考:
小弟的blog: In 91,wiki: my wiki- 已提議為解答 No.18MVP, Moderator 2013年4月10日 下午 02:07
- 已標示為解答 wayne7813 2013年4月11日 上午 01:38
-
showModalDialog 並不是標準的w3c所規範的方法,因此在不同browser下有可能會有不同的情況
, 您應該會發現到在chrome下,它有點像是window.open的效果
我會建議您如果您沒有什麼特定原因非得用showModalDialog的話,可以換成別另開視窗的方式
軟體開發領域裡區區一個迷途工程師
MyBlog: http://www.dotblogs.com.tw/ian/
開發ASP.NET您要瞭解的基楚