2015-10-06 149 views
2

我使用window.open打開一個新的窗口從代碼後面到以怪癖模式運行的頁面。但是,當我點擊這個按鈕進入第二頁時,它也會改變第一頁模式。window.open在怪癖模式也改變後續頁面的怪癖模式

這是我寫的一段代碼:

Dim url1 As String = "MYURL.html" 
Response.Write("<script>") 
Response.Write("newwindow=window.open('" + url1 + "','_blank');") 
Response.Write("newwindow.focus()") 
Response.Write("</script>") 

有沒有辦法解決這個問題呢?

注意:我的目標頁面確實應該以怪癖模式運行,所以這不是我可以忽略的部分,我必須使用在服務器上運行的按鈕來完成此操作,所以我無法實現與其目標設置爲_blank的定位標記。

回答

1

最後,我找到了一種方法,但是這是一個有點工作圍繞但它會做現在的工作

Dim url1 As String = "MYURL.html" 
Response.Write("<script>") 
Response.Write("newwindow=window.open('" + url1 + "','_blank');") 
Response.Write("newwindow.focus()") 
Response.Write("window.open('" + HttpContext.Current.Request.Url.AbsoluteUri + "','_self')") 
Response.Write("</script>") 

下面的行的代碼會得到相同的網址,並在同一個標​​籤中打開它(比如location.reload();會做的,但我不能在這種情況下使用它,所以我想出了這個替代品),並且第一頁有一個meta標籤可以打開頁面在ie邊緣一切似乎都很好。

Response.Write("window.open('" + HttpContext.Current.Request.Url.AbsoluteUri + "','_self')") 

編輯: 如果彈出窗口攔截,阻止網站仍然在第一頁會去怪異模式..但與它下面的代碼將提醒用戶解決問題如果彈出式窗口攔截是關閉它顯示了第二頁

Dim url1 As String = "MYURL.html"  
Response.Write("<script>") 
Response.Write("newwindow=window.open('" + url1 + "','_blank');") 
Response.Write("if(!newwindow || newwindow.closed || typeof newwindow.closed=='undefined'){") 
Response.Write("alert('please disable pop-up blocker for this site');") 
Response.Write("}") 
Response.Write("else{") 
Response.Write("newwindow.focus();") 
Response.Write("}") 
Response.Write("window.open('" + HttpContext.Current.Request.Url.AbsoluteUri + "','_self')") 
Response.Write("</script>") 

編輯2:我finall Ÿ發現問題是什麼...實際response.write是我的第一頁轉到怪癖模式,並修復它的原因我用Page.RegisterClientScriptBlock像波紋管打開我的窗口,一切工作就像它應該

Page.RegisterClientScriptBlock("", "<script>window.open('" & MYURL & "', '_blank', 'toolbar=no');</script>") 
2

試試這個:

Dim url1 As String = "MYURL.html" 
Response.Write("<script>") 
Response.Write("function fen_pop(url) {") 
Response.Write("newwindow=window.open('" + url + "','_blank');") 
Response.Write("if (window.focus) {newwindow.focus();}") 
Response.Write("newwindow.focus();") 
Response.Write("return false;") 
Response.Write("}") 
Response.Write("</script>") 
在HTML

使用鏈接:

<a href="#" onclick="return fen_pop('MYURL.html')">Link to popup</a> 

的 「返回false;」補充,我認爲將解決您的問題。 這是爲了防止瀏覽器跟蹤實際的鏈接。


另一種方式來寫是這樣的:

Response.Write("<script>") 
Response.Write("function fen_pop(url) {") 
Response.Write("newwindow=window.open('" + url + "','_blank');") 
Response.Write("if (window.focus) {newwindow.focus();}") 
Response.Write("newwindow.focus();") 
Response.Write("}") 
Response.Write("</script>") 

在HTML頁面:

<a href="#" onclick="fen_pop('MYURL.html'); return false;">Link to popup</a> 
+0

謝謝你的回答......我真的應該在一個按鈕上使用這段代碼,所以我在上面的代碼上試了一次,但是「return false」阻止了新窗口被打開,所以第一頁只刷新了,怪癖模式 – NikiUsefi

+0

nop,首先調用該函數打開窗口。並在返回false後阻止源網頁,重試它。 – Mimouni

+0

我再次嘗試,但它仍然有相同的效果,我認爲這是因爲它在服務器上運行發生...我不能添加「fen_pop('MYURL.html');返回false;」直接在按鈕的onclick屬性中,因爲它現在還不存在,如果我在後面的代碼中寫入這個返回false而沒有fen_pop函數,它仍然會有相同的效果 – NikiUsefi