2014-01-09 19 views
1

我有一個.NET應用程序來搜索在點擊時彈出窗口中打開搜索結果的數據。在第一次點擊搜索按鈕,結果正確填充在新的彈出窗口 - 讓我們把它命名爲ResultPopup。在第二次搜索按鈕單擊時,結果不會填充到ResultPopup窗口 - 除非有對ResultPopup窗口的回發或新操作。Javascript window.open()不會在IE 8中顯示新內容,除非刷新

所有這一切都適用於FireFox。這裏是我的aspx搜索點擊功能(的onclick觸發)

protected void SearchBtn_Click(object sender, EventArgs e) 
{ 
    Session["RNum"] = RNumTxtBox.Text.Trim(); 
    Session["Location"] = LocationTxtBox.Text.Trim(); 
    Decimal dTemp; 

    if (!string.IsNullOrEmpty(QNumTxtBox.Text) && 
     Decimal.TryParse(QNumTxtBox.Text, out dTemp)) 
    { 
     Session["QNum"] = dTemp; 
    } 
    else 
    { 
     Session["QNum"] = 0; 
    } 

    Session["INum"] = INumTxtBox.Text.Trim(); 
    Session["PNum"] = PNumTxtBox.Text.Trim(); 
    Session["SValue"] = SRadBtnList.SelectedValue; 

    // sPageName is a class variable - predefined URL 
    // sTarWinName is a class variable - target window name for all search results 
    ScriptManager.RegisterStartupScript(Page, typeof(Page), "OpenSearchMain", string.Format("javascript: popSearchResultWindow('{0}', '{1}');", sPageName, sTarWinName), true);  
} 

繼承人是我的JavaScript函數:

function popSearchResultWindow(pageName, tarWinName) { 
    var sUrl = pageName; 
    var oSearchResultWin = window.open(sUrl, tarWinName, 'location=1,resizable=1', false); 

    // oSearchResultWin.location.reload(true); 
    // using reload or refresh will give javascript: permission denied (after 4-5 click) 
    oSearchResultWin.focus(); 
} 

回答

1

可能有兩個原因 1)你的名字中有空格,破折號或其他標點符號

2)ie8不支持「name」作爲window.open()中的第二個值()

你的代碼應該是

var oSearchResultWin = window.open(sUrl,'','location = 1,resizable = 1',false);

,如果你是在所有使用的第二個參數: _blank _media _parent _search _self _top

編輯: 您是否嘗試過這樣做:

var oSearchResultWin = false; 

function popSearchResultWindow(pageName, tarWinName) { 
if(oSearchResultWin && !oSearchResultWin.closed){ 
    oSearchResultWin.location.href = sUrl; 
    oSearchResultWin.location.name = tarWinName; 
} 
else { 
    var sUrl = pageName; 
    oSearchResultWin = window.open(sUrl, tarWinName, 'location=1,resizable=1', false); 
} 
oSearchResultWin.focus(); 
} 
+0

1)目標窗口名稱正確 - 第1次正確加載。問題是,它不會顯示第二,第三,第四,..搜索點擊新的數據,除非我手動刷新頁面。 2)我需要在一個目標窗口中顯示數據,並且我嘗試了您的建議,但遇到了錯誤。 var oReqSearchResultWin = window.open(sUrl,'_blank _media _parent _search _self _top','location = 1,resizable = 1',false); – user3179644

+0

我使用'_search'作爲目標窗口名稱,但它只能在本地使用。在服務器應用程序池上,它的行爲相同 - 任何想法? – user3179644

+0

我不確定爲什麼_search不適用於應用程序池。我認爲你需要取消註釋oSearchResultWin.location.reload(true);.彈出窗口被ie緩存,所以當你再次加載url時,它已經看到它已被加載。通過強制重新加載,它應該從Web服務器重新獲取頁面。 –

0

謝謝您幫助馬特。我重寫了代碼,因爲它仍然給我「Javascript:權限被拒絕」的錯誤。

function popSearchResultWindow(pageName, tarWinName) { 
var sUrl = pageName; 
var oSearchResultWin = window.open(sUrl, tarWinName); 
if (oSearchResultWin && !oSearchResultWin.closed) { 
    try{ 
     oSearchResultWin.location.href = sUrl; oReqSearchResultWin.location.name = tarWinName; 
    }catch (err){ 
     oSearchResultWin.location.reload(true); 
    } 
} 
oSearchResultWin.focus(); 
}