2013-03-20 66 views
0

在我的ViewModel我準備動態URL,然後調用它如下。彈出窗口阻止程序阻止彈出而Silverlight的按鈕或點擊hyperlinkbutton

HtmlPage.Window.Navigate(new Uri(URL), "_blank"); 

但它沒有工作,所以我試圖從Silverlight和JavaScript內調用javascript我稱爲window.open()方法。代碼是這樣的:

HtmlPage.Window.Invoke("open_win", URL); 

和Javascript功能open_win是這樣的:

function open_win(param1) { 
     var win = window.open(param1, 'ad', 'width=400,height=200,scrollbars=yes') 
     win.focus(); 
    } 

但它僅適用於IE所有其他瀏覽器顯示彈出窗口攔截器。

我已經嘗試了一個更多的解決方案來擺脫彈出窗口阻止程序 我已經創建了虛擬html按鈕,並觸發它內部的open_win函數,然後它也沒有工作,但當我點擊html按鈕時,它工作正常。所以請幫助我做與silverlight按鈕相同。

如果您有任何其他解決方案來打開新的瀏覽器窗口沒有彈出窗口攔截器,那麼也建議我。

在此先感謝。

+1

是不是彈出窗口阻止程序來阻止彈出窗口?在我看來,一切都如預期的那樣工作......除IE之外,它失敗了。 – nvoigt 2013-03-20 06:33:04

+0

我同意。除非IE知道Silverlight的click事件,否則它應該阻止新窗口的創建。 – Chris 2013-03-20 07:32:07

+0

@nvoigt使用aspx頁面也是一樣。當我們點擊aspx頁面上的按鈕時,彈出窗口阻止程序不會阻止彈出窗口,但是當我們對silverlight執行相同操作時,它會阻止。 – 2013-04-08 08:27:45

回答

0

傾聽在Javascript Click事件。

如果您使用Silverlight接收點擊,瀏覽器不知道發生了點擊。它只是假設你的代碼試圖打開一個新的瀏覽器。這就是爲什麼你的新窗口被分類爲彈出窗口。

使用JavaScript來監聽DOM click事件。然後瀏覽器會尊重你的新窗口。

相關問題