我在Javascript中創建了一個小日曆彈出窗口。非常簡單,使用ASP.NET的Calendar控件。我用showModalDialog調用彈出窗口。在模態窗口,更改日曆的當前月份會導致因爲回傳的問題,我在幾個地方發現,解決的辦法是把:javascript - showModalDialog在Chrome中不返回值
<base target="_self"/>
在aspx文件的頭部。一切都很好......除了一件事情,並且只在谷歌瀏覽器中。爲了取回選定的日期,我將彈出的returnValue設置爲日曆中選定的日期。在IE和Firefox中,它始終有效。但是,在Chrome中,僅當我不更改日曆中的當前月份時纔有效。只要我改變它,返回值不會傳回給showModalDialog的調用者。就好像模態窗口不再是原來的窗口一樣;返回值是未定義的。
有沒有人經歷過這種行爲,並有建議使其工作?我嘗試使用dialogArguments來跟蹤調用者窗口,但它只傳遞給第一個模式窗口(它在更改當前月份後會丟失)。
調用過程中的代碼:
var d = window.showModalDialog(...)
在模態窗口中的代碼:
window.returnValue = selectedDate;
self.close();
正如我說Teemu,selectedDate和window.returnValue都總是正確的。但是,在Google Chrome的情況下(在日曆更改一個月後),returnValue不會被showModalDialog傳回,並且d是未定義的。
聽起來更像你的程序來改變模式對話框中的'returnValue'在Chrome中失敗。 – Teemu 2012-04-18 16:24:59
在這種情況下,爲什麼當我留在當前月份時它會工作? – ConnorsFan 2012-04-18 16:26:06
很難說沒有看到代碼... – Teemu 2012-04-18 16:27:22