ASP.NET 的 LinkButton本身沒有 target屬性,所以先用以下的方式解決:

先創一個Page(open.aspx),放置一個名為LinkButton1的LinkButton元件

JavaScript:

    function NewWindow() {
        document.forms[0].target = "_blank";
    }

後台:

    protected void Page_Load(object sender, EventArgs e)
    {
        LinkButton1.OnClientClick = "NewWindow()"; //註冊js
    }
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/default.aspx");
    }

(注意:本來是用前端直接用window.open() » 這會有安全性檔住的問題!!)

微軟有篇文章對快顯封鎖的詳細介紹,算是網頁開發人員角度的技術說明。

原則上,快顯封鎖主要會封鎖"由程式觸發而非使用者點擊觸發的開啟新視窗行為",範圍包含:

  • window.open
  • window.showHelp
  • window.showModalDialog
  • window.showModelessDialog
  • window.external.NavigateAndFind
  • setHomePage()
  • 自動導向搜尋欄(Scripts from automatically targeting the search pane.)
  • 由覆蓋在網頁上DHTML元素自動開啟的視窗(Windows that are opened automatically from DHTML elements that overlap content on the same page. )
  • 在onunload中呼叫window.open(以前"永遠關不掉的廣告網頁"愛用的技倆)
  • Scripts from targeting and then navigating to a named frame that doesn't exist. 只有以下情況,開啟新視窗行為才被允許:
  • 使用者點擊連結(link)
  • 本機端執行的程式(非網頁Script)開啟(含廣告軟體)
  • 透過ActiveX元件,經由使用者的操作觸發
  • 網頁位於信任的網站(Trusted Sites)或近端內部網路(Local Intranet)
  • 使用者在快顯封鎖程式設定所列舉"允許的網站"
  • 透過window.createPopup建立子視窗(但createPopup不能指向現成網頁的URL,要透過Javascript建構內容)

原出處:http://blog.darkthread.net/post-2011-07-12-showmodaldialog-and-popup-blocker.aspx

文章標籤
創作者介紹
創作者 Jimmy 的頭像
Jimmy

吉米.NET

Jimmy 發表在 痞客邦 留言(1) 人氣()


留言列表 (1)

發表留言
  • 訪客
  • 謝謝你的分享 剛好遇到這個問題解不開 ...

    分享一下我之前自己先摸出來的方式

    form1.Controls.Add(new LiteralControl("<div style='display:none;'><a id='add_link' href='" + url + "' target='_blank'>動態新連結</a></div>"));
    Page.ClientScript.RegisterStartupScript(Page.GetType(), "newlink", "<script> document.getElementById('add_link').click(); </script>");

    簡單的說是因為我發現一般網頁上面<a target='_blank'>網址</a>
    的方式好像就可以直接開新分頁,就直接在form裡面生一個,然後用js去click他
    結果是只有IE可以用,firefox,chrome都還是阻檔彈窗