跳转到路径导航栏
跳转到正文内容

Silverlight 4 火影忍者:Web特性大显身手

http://www.sina.com.cn  2010年08月12日 10:18  IT168.com 官方微博

  Silverlight 4版本中加入了一系列令人兴奋的新特性,WebBrowser便是其中之一。WebBrowser是Silverlight4版本中加入的一个运行在 Silverlight应用程序内部的浏览器控件,这是一个非常有用的控件。当我们的Silverlight应用程序需要在某个位置显示一些HTML内容 或是一个网页的时候,WebBrowser就会大显身手。

  另一方面,通过在Silverlight应用程序嵌入WebBrowser控件的方法可以弥补Silverlight应用程序不能显示HTML网页的不足。本文中,我们将通过构建一个简化版本的Silverlight浏览器来介绍 如何在Silverlight4应用程序使用WebBrowser控件。

  之后,我们还要深入探讨这个控件的其他功能,力争全面了解WebBrowser控件在新一代Silverlight RIA应用程序开发下可能蕴藏的巨大能量。

  在开始构建实例之前,我们还要明确:WebBrowser控件只能在浏览器外(Out-of-Browser)Silverlight应用程序中使用。

  一、创建示例工程

  启动Visual Studio 2010,创建一个普通的Silverlight 4应用程序,并命名为SL4WebBrowser。此后,系统会自动开启主程序界面MainPage.xaml。

  现在,我们把一个WebBrowser控件拖动到上述主界面中。系统出现如下图所示的提示。

1

  图中提示的意思是,WebBrowser控件仅能运行于浏览器外(以Out-of-Browser模式运行)。

  二、修改工程属性

  为了支持浏览器外运行功能,我们需要修改Silverlight应用程序的属性。为此,点击菜单“Project|SL4WebBrowser Properties…”,随后弹出如图所示的Silverlight工程属性设置对话框。

  勾选图中的“Enable running application out of the browser”选项,并单击按钮“Out-of-Browser Settings…”。

1

  注意,为了简单起见,我选择了“Require elevated trust when running outside the browser”选项。这样一来,我们就能够使用WebClient类或WebBrowser控件导航到任意网址,而不必考虑Silverlight应用 程序限制的跨域调用的安全问题。如果该复选框未选中,我们只能打开我们本地服务器上的网页。

  三、后台代码编程

  现在,我们简单地看一下后台代码中需要的编码内容:

public MainPage()
{
InitializeComponent();
webBrowser1.Width
= Application.Current.MainWindow.Width;
webBrowser1.Height
= Application.Current.MainWindow.Height;
if (App.Current.IsRunningOutOfBrowser)
{
webBrowser1.Source
= new Uri("http://space.itpub.net/14466241/");
}
}

  非常简洁明了吧。下图给出了上面示例的运行时快照。

1

  显然,上图中页面不是运行于浏览器中,而是以浏览器外方式运行的。

  四、WebBrowser控件其他重要成员剖析

  从本节开始,让我们来更深入地追踪分析WebBrowser控件提供的其他一些重要成员的使用情况。

  WebBrowser控件提供了如下一些重要方法及属性,其各自的含义如下:

  1. Source属性:获取或设置要显示的HTML内容对应的URI。

  2. Navigate方法:要加载的HTML内容,可以是来自于一个跨域的位置。

  3. NavigateToString方法:以文本方式显示要加载的HTML内容。

  4. SaveToString方法:以文本方式保存在此控件中加载的HTML内容,可以是来自于一个跨域的位置。

  请特别注意,出于安全原因,在使用WebBrowser控件时请务必确保与NavigateToString方法一起显示的HTML来自于受信任源。

  最后,我们来观察一下WebBrowser控件的完整定义代码:

namespace System.Windows.Controls
{
public sealed class WebBrowser : FrameworkElement
{
// Summary:
//     Initializes a new instance of the System.Windows.Controls.WebBrowser class。
public WebBrowser();

// Summary:
//     Gets or sets the URI source of the HTML content to display in the System.Windows.Controls.WebBrowser
//     control。
//
// Returns:
//     The URI source of the HTML content to display in the System.Windows.Controls.WebBrowser
//     control。
public Uri Source { get; set; }

// Summary:
//     Occurs when top-level navigation completes and the content loads into the
//     System.Windows.Controls.WebBrowser control or when an error occurs during
//     loading。
public event LoadCompletedEventHandler LoadCompleted;
//
// Summary:
//     Occurs when the content contained in the System.Windows.Controls.WebBrowser
//     control passes a string to the Silverlight plug-in by using JavaScript。
public event EventHandler<NotifyEventArgs> ScriptNotify;

// Summary:
//     Executes the specified script, which is defined in the currently loaded HTML。
//
// Parameters:
//   scriptName:
//     The name of the script to execute
//
// Returns:
//     The result of the script invocation。
//
// Exceptions:
//   System.Security.SecurityException:
//     The script target is at a cross-domain location。
public object InvokeScript(string scriptName);
//
// Summary:
//     Executes the specified script function, which is defined in the currently
//     loaded HTML, with the specified arguments。
//
// Parameters:
//   scriptName:
//     The name of the script to execute
//
//   args:
//     The arguments to pass to the script function
//
// Returns:
//     The result of the script invocation。
//
// Exceptions:
//   System.Security.SecurityException:
//     The script target is at a cross-domain location。
public object InvokeScript(string scriptName, params string[] args);
//
// Summary:
//     Loads the HTML content at the specified URI。
//
// Parameters:
//   source:
//     The URI of the HTML content to load。
//
// Exceptions:
//   System.Security.SecurityException:
//     The HTML content to load is from a cross-domain location。
public void Navigate(Uri source);
//
// Summary:
//     Displays the specified HTML content。
//
// Parameters:
//   text:
//     The HTML content to display in the System.Windows.Controls.WebBrowser control。
public void NavigateToString(string text);
//
// Summary:
//     Saves the source for the HTML content currently displayed in the System.Windows.Controls.WebBrowser
//     as a string
//
// Returns:
//     The string representation of the source for the currently displayed HTML
//     content。
//
// Exceptions:
//   System.Security.SecurityException:
//     The HTML content to be saved is from a cross-domain location。
public string SaveToString();
}
}

  下一节中,我们将通过一个简单的例子来了解上述InvokeScript方法的用法。

上一页 1 2 3 下一页

分享到:

更多关于 Silverlight WebBrowser  的新闻

新浪简介About Sina广告服务联系我们招聘信息网站律师SINA English会员注册产品答疑┊Copyright © 1996-2011 SINA Corporation, All Rights Reserved

新浪公司 版权所有