2010-04-15 99 views
6

該應用程序使用asp.net 2.0在Windows Server 2003盒子上運行,並且是IE特定的Web應用程序。有一個按鈕使用來自位於JavaScript中的函數調用的showModalDialog(...)在iframe中打開表單。嘗試在模式窗口中打開模式窗口時發生Javascript錯誤

下面是函數的一個例子:

function ShowBusinessHoursSubForm(source) 
{ 
    var retval = window.showModalDialog("htm/" + locLocaleID + "/SubFormHostFrame.htm", source, "dialogWidth:265px;dialogHeight:261px;help:no;scroll:no;status:no;"); 

} 

主機幀被加載包含正在使用的實際形式aspx頁。在打開的窗體上有一個按鈕,單擊它時將提交更改爲窗體。但是,如果在提交表單之前未做任何更改,則會彈出另一個模式窗口,指出表單沒有更改。這個模式窗口是通過在按鈕點擊事件中註冊一些JavaScript來打開的。代碼如下(C#):

string l_S_ErrorScript = "<script type='text/javascript' language='javascript'>window.showModalDialog('htm/" + l_S_Culture + "/NotChangedErrorDialog.htm', '../../" + l_S_SkinPath + "', 'dialogWidth:310px;dialogHeight:145px;scroll:no;help:no;status:no;');</script>"; 

if(!m_Page.ClientScript.IsStartupScriptRegistered("ErrorScript")) 
     { 
      m_Page.ClientScript.RegisterStartupScript(this.GetType(), "ErrorScript", l_S_ErrorScript); 
     } 

當按鈕被點擊,該對話框中需要出現出現以下JavaScript錯誤:

Error: Object doesn't support this property or method

奇怪的是,如果我訪問應用程序本地並嘗試一切正常,但從另一臺計算機訪問會導致錯誤。另外,根據什麼服務器(我們有許多服務器用於測試所有的Windows Server 2003),該錯誤可能不會在另一臺計算機上發生。這些計算機使用相同版本的IE以相同的設置運行相同的軟件版本。我傾向於認爲某處存在某些配置問題,但設置相同時很難說明問題。我無法真正改變應用程序如何工作或使用的技術。

任何人有任何想法可能是什麼原因造成這種情況?

回答

9

問題出在客戶機上IE中的彈出窗口阻止程序。由於模式窗口正在另一個模式窗口中打開,因此彈出窗口阻止程序不會將其視爲父項的一部分,並認爲它應該阻止它。將該網站添加到彈出式窗口攔截器後,所有工作。

多可笑!