2010-06-11 148 views
3

我需要從Silverlight Out-of-Browser應用程序打開窗口彈出窗口。如何從Silverlight Out-of-Browser打開窗口彈出窗口?

我已經添加參數<param name="enablehtmlaccess" value="true" /> index.html中,但是從後面的代碼執行此:

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

仍返回錯誤:

Silverlight OOB Error: The DOM/scripting bridge is disabled. 

我讀過有關this後,不是意味着我無法從OOB打開彈出窗口?爲什麼我需要這樣做,因爲實際上,我已經在OOB Silverlight中用WebBrowser控件在ChildWindow中顯示了HTML頁面,但是當我單擊鏈接到_blank頁面的HTML頁面中的錨點時,它會跳轉到默認瀏覽器。它不符合要求,除了首次在默認瀏覽器中啓動HTML索引頁面(由OOB Silverlight中的按鈕控件觸發)。那可能嗎?

請指教,謝謝。

回答

2

不,這是不可能的。在OOB應用程序中,與HTML橋的任何交互都被禁用。

3

不知道這是你所追求的,但試試這個...

在一個OOB應用程序,您可以使用以下解決方法:

這樣創建一個派生超鏈接按鈕:

public class MyHyperlinkButton : HyperlinkButton 
{ 
     public void ClickMe() 
     { 
       base.OnClick(); 
     } 
} 

使用導航:

private void NavigateToUri(Uri url) 
{ 
     if (App.Current.IsRunningOutOfBrowser) 
     { 
       MyHyperlinkButton button = new MyHyperlinkButton(); 
       button.NavigateUri = url; 
       button.TargetName = "_blank"; 
       button.ClickMe(); 
     } 
     else 
     { 
       System.Windows.Browser.HtmlPage.Window.Navigate(url, "_blank"); 
     } 
} 

see forums.silverlight.net

2

我碰到這個問題,今天來了,這就是我在Silverlight 5解決了這個問題:

/// <summary> 
/// Opens a new browser window to the specified URL with the specified target 
/// For use while running both in or out-of-browser 
/// </summary> 
public class WebBrowserBridge 
{ 
    private class HyperlinkButtonWrapper : HyperlinkButton 
    { 
     public void OpenURL(String navigateUri, String target = "_blank") 
     { 
      OpenURL(new Uri(navigateUri, UriKind.Absolute), target); 
     } 

     public void OpenURL(Uri navigateUri, String target = "_blank") 
     { 
      base.NavigateUri = navigateUri; 
      TargetName = target; 
      base.OnClick(); 
     } 
    } 

    public static void OpenURL(String navigateUri, String target = "_blank") 
    { 
     HyperlinkButtonWrapper hlbw = new HyperlinkButtonWrapper(); 
     hlbw.OpenURL(navigateUri, target); 
    } 

    public static void OpenURL(Uri navigateUri, String target = "_blank") 
    { 
     HyperlinkButtonWrapper hlbw = new HyperlinkButtonWrapper(); 
     hlbw.OpenURL(navigateUri, target); 
    } 
} 

下面是如何既實現&使用它:

private void hlViewMarketplace_Click(object sender, RoutedEventArgs e) 
     { 
      Uri destination = new Uri("http:///www.google.com/" + ((HyperlinkButton)sender).CommandParameter); 
      WebBrowserBridge.OpenURL(destination, "_blank"); 
     } 
用下面的代碼創建一個新類
+0

我不明白這是如何解決在OOB方案中的問題。你能描述它如何適用於在OOB中打開瀏覽器彈出窗口? – RobSiklos 2013-01-18 16:52:39

+0

@RobSiklos好吧,我一定誤解了這個問題。我今天的問題是當我試圖從SilverLight OOB應用程序打開網頁時,我收到了令人生畏的'DOM /腳本橋被禁用'。所以我用我上面發佈的來解決這個問題。現在,當我點擊一個按鈕時,我可以從我的應用代碼隱藏的瀏覽器窗口中打開URL。 – Agilis 2013-01-18 16:57:54

相關問題