Silverlight与浏览器通信技术总结1:Silverlight访问HTML DOM

Silverlight是浏览器的一个插件,运行在浏览器的Sand Box中。Silverlight与浏览器之间的访问,有时会给编程带来很大便利。本系列的目的是总结Silverlight与浏览器互访的技术及应用,作为实际开发时的参考。首先来看Silverlight如何访问HTML DOM。


HTML DOM(Document Object Model)定义了标准的方法来操作HTML文档,它是树形结构的。在Silverlight中你可以通过HtmlPage.Document对象直接与HTML DOM进行交互。HtmlPage类允许访问和操作浏览器的HTML DOM,通过这个类你还可以访问浏览器的其他特性,例如浏览器信息等。这个类在System.Windows.Browser命名空间。HtmlPage.Document返回对象类型HtmlDocument,通过这个对象可以访问HTML DOM.

private void SendMessage(string message) 
{ 
      HtmlDocument doc = HtmlPage.Document; 
      HtmlElement element = doc.GetElementById("message"); 
      if (element != null) 
      { 
            element.SetProperty("innerHTML", message); 
      } 
}

HtmlDocument类提供了各种方法和属性来管理HTML文档: 

Body - 访问HTML文档body,可以改变它的属性或者child elements等。
Cookies - 获取或设置当前站点的cookie信息。
QueryString - 获得当前站点的query string collection。
GetElementById(...) - 通过id来获得HTML element。
GetElementsByTagName(...) - 通过tag名字来获得一组HTML element。 

 

另外一个重要的类是HtmlElement:

Children - 获得当前HTML element的所有child elements。
CssClass - 获取或设置HTML element的class属性,通过它可以很容易的操作HTML element的style。
SetAttribute(...) - 改变当前HTML element的Attribute值。
SetProperty(...) - 改变当前HTML element的Property值。
SetStyleAttribute(...) - 改变HTML element的style attribute值。

 

是不是对HTML的Attribute和Property的区别有点困惑?每一个HTML element都有一个Property,在DOM树中可以看到。这些Property可以通过JavaScript或其他脚本语言来访问。而Attribute用于HTML声明中,例如:<table width="100%">。每一个Attribute都有一个Property相对应,反之则不一定,因此Attribute相当于Property子集。

 

通过上面介绍可以看到,Silverlight访问HTML DOM十分简单,源代码请在这里下载

在线演示:http://rpg.yingyuantown.com/AccessHtmlDomProjectTestPage.html

 

在本系列后面将给出一些具体应用实例,敬请期待,谢谢。

 

update:

如果你不希望silverlight访问HTML DOM,可以在silverlight object中设置参数:

<param name="enablehtmlaccess" value="false"/>

 

 

posted @ 2010-05-18 06:08  erichan  阅读(767)  评论(1编辑  收藏  举报