台灣最大程式設計社群網站
線上人數
1347
 
會員總數:243460
討論主題:188180
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 請問要怎麼避開被彈出式視窗封鎖
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問要怎麼避開被彈出式視窗封鎖
價值 : 100 QP  點閱數:173 回應數:9

樓主

danny
門外漢
0 13
309 25
發送站內信

環境: VS2017

請教各位,我是以下面的方式,另開視窗,可是都會被瀏覽器 封鎖彈出式視窗

若不改瀏覽器的設定,要怎麼調整,才不會被封鎖 ?






搜尋相關Tags的文章: [ window.open ] , [ 彈出式視窗 ] , [ 封鎖 ] ,
本篇文章發表於2018-10-26 10:30
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

彩虹
檢舉此回應
window.open 的方式沒有辦法避開喔∼

請參考
asp.net不經由javascript 另開新視窗的方法
https://social.msdn.microsoft.com/Forums/zh-TW/67a8226d-0d71-48ce-ba5f-a8685d567586/aspnet199813214730001javascript?forum=236
本篇文章回覆於2018-10-26 14:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
https://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD20181017233207LEB.html
你不是才問過[相反]的問題嗎?


[自動開新視窗]都是會被擋的,

搭配按鈕或超連結的onclick, 就不會被擋

然而問題出在於你的寫法,
是在client onclick 之後, 網頁才產生 [自動開新視窗]的指令



本篇文章回覆於2018-10-26 14:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

danny
檢舉此回應

1.謝謝 彩虹 推薦的網頁,我先試看看

2.謝謝 小羊窒息,前幾天是有問過如何測試彈出式視窗的方法,但是公司方面,
是希望系統盡可能不要去要求使用者設定這個,設定那個的
因為.除非是很重要的頁面,否則有些使用者寧願不執行,也不願意去更改設定

所以才會尋找其他替代方案
本篇文章回覆於2018-10-26 17:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
沒人要你去[要求使用者 設定瀏覽器]

你需要的是在asp.net的頁面中,
讓使用者的click事件, 直接搭配window.open (最直接的寫法是 onClientClick)
不要等到postback之後才輸出window.open

自然可以解決~
本篇文章回覆於2018-10-26 21:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
小喵好奇的問一下
您用window.open就是要開啟另外一個aspx
然後,那支被開啟的aspx要做啥?

window.open不行


這樣的方式可以接受嗎?

知道您要做啥,達到什麼效果
也許可以用其他的方式來做到類似的效果

比較建議您描述一下您想做到啥效果,最好可以舉個例子
這樣可以根據您的例子、或者您的描述
提供您不一樣的處理方式

^.^a
本篇文章回覆於2018-10-26 22:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

danny
檢舉此回應

謝謝 小羊窒息: 大部份的 window.open 是寫在 onClientClick ,這部份沒問題,不會被封鎖

謝謝 topcat : 若是需要傳遞 "動態參數" 給cust.aspx,才會寫在按鈕的程式碼內

本篇文章回覆於2018-10-29 09:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
不錯的參考

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
window.open('cust.aspx?no=' & noTextBox.text ); // 將使用者輸入的 客戶編號 給 cust.aspx
上面的問題可以直接用javascript來解決...
(其實你自己已經無意間將解決的方式寫出來了)

<script>
onclientclick="window.open('cust.aspx?no=' + document.getElementById('noTextBox').value );"
</script>
本篇文章回覆於2018-10-29 10:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
若是需要傳遞 "動態參數" 給cust.aspx,才會寫在按鈕的程式碼內
那支 cust.aspx 執行後,主要是執行查詢/挑選客戶,然後選取後返回


小喵理解您的需求

小喵說說自己的一些經驗提供參考
在早期(asp時期與還沒接觸jQuery,Bootstrap以前的時期)
小喵的做法與您類似,寫在另外一個畫面,用另開視窗的方式(window.open)或者對話視窗(window.showModalDialog),依據條件撈取資料後呈現
使用者在另開視窗挑選後,把值再傳回原視窗
(大約是15年前的做法)

後來,也是因為『彈跳視窗封鎖』,小喵在ASP.NET WebForm改以『div搭配runat=server』來處理類似的需求
ASP.NET使用div runat=server取代showModalDialog
(看貼文的時間2008,這是10年前的做法)

這樣的好處是,程式都是寫在同一個aspx,所以要傳遞資料超級容易

在更後來,開始接觸jQuery,以及更後來接觸Bootstrap之後
小喵會使用Bootstrap的『Modal』的方式
不只是可以避免『彈跳視窗封鎖』的麻煩、寫在相同aspx傳遞容易
而且使用者介面UI不但可以『響應式(電腦手機可以最適顯示)』,而且變漂亮好看
Bootstrap 互動視窗 (Modal)

所以,如果現在小喵要給您一個小喵覺得最好的建議
小喵建議您:使用『Bootstrap的Modal』替代『另開視窗』
除了可以解決您目前的問題
也可以讓您的介面、視覺提高一個檔次

提供您參考
^_^
本篇文章回覆於2018-10-29 10:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

danny
檢舉此回應

謝謝各位的建議,我先研究看看
本篇文章回覆於2018-10-29 11:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.