Silverlight JavaScript 集成 - 第 1 部分
Silverlight 和 JavaScript 的集成

引言
Silverlight 是一种基于浏览器的插件。该插件旨在与网页集成。
文档对象模型 (DOM) 将允许 Web 应用程序和脚本动态地访问和更新文档的内容和结构。
Using the Code
- 访问 HTML 元素并修改其属性
div id="headerDiv" style="width:100%; height:20%; background-color:Red" private void btnAccessHtmlElements_Click(object sender, RoutedEventArgs e) { System.Windows.Browser.HtmlDocument doc = System.Windows.Browser.HtmlPage.Document; System.Windows.Browser.HtmlElement headerDiv = doc.GetElementById("headerDiv"); headerDiv.SetStyleAttribute("background-color", "green"); }
- 访问查询字符串的值。
假设网页使用以下链接打开
- https://:7410/SilverlightDomInteractionTestPage.aspx?employeeID=600
private void btnAccessQueryStrings_Click(object sender, RoutedEventArgs e) { System.Windows.Browser.HtmlDocument doc= System.Windows.Browser.HtmlPage.Document; int empID = int.Parse(doc.QueryString["employeeID"]); MessageBox.Show(empID.ToString());//Results 600 }
- 访问所有查询字符串的值。
假设网页使用以下链接打开
- https://:7410/SilverlightDomInteractionTestPage.aspx?employeeID=600&sallaryLessthan=2000
private void btnAccessAllQueryStrings_Click(object sender, RoutedEventArgs e) { Dictionary<string, string> QueryStrings = new Dictionary<string, string>(); System.Windows.Browser.HtmlWindow win = System.Windows.Browser.HtmlPage.Window; System.Windows.Browser.HtmlDocument doc = System.Windows.Browser.HtmlPage.Document; foreach (string key in doc.QueryString.Keys) { QueryStrings.Add(key, doc.QueryString[key]); } MessageBox.Show(QueryStrings.Count.ToString());//Results 2 }
- 调用 JavaScript 函数
function ChangeHeaderDivColor() { var hDivElement = document.getElementById("headerDiv"); hDivElement.style.backgroundColor = "Green"; } private void btnInvokeJSFunction_Click(object sender, RoutedEventArgs e) { System.Windows.Browser.HtmlWindow win = System.Windows.Browser.HtmlPage.Window; win.Invoke("ChangeHeaderDivColor"); }
- 从 JavaScript 函数返回值
function GetSum(a, b) { return a + b; } private void btnReturnValueJSFunction_Click(object sender, RoutedEventArgs e) { System.Windows.Browser.HtmlWindow win = System.Windows.Browser.HtmlPage.Window; object result = win.Invoke("GetSum", 17, 7); MessageBox.Show(result.ToString());//Result 24 }
- 显示 JavaScript 警报
private void bntJSAlert_Click(object sender, RoutedEventArgs e) { System.Windows.Browser.HtmlWindow win = System.Windows.Browser.HtmlPage.Window; win.Alert("Hello DOM!"); }
- 导航到链接
private void btnNavigateToLink_Click(object sender, RoutedEventArgs e) { string target = "_blank"; System.Windows.Browser.HtmlPage.Window.Navigate (new Uri("http://silverlight.net"), target); }
_blank Open the linked document in a new window or tab _self Open the linked document in the same frame as it was clicked (this is default) _parent Open the linked document in the parent frameset _top Open the linked document in the full body of the window framename Open the linked document in a named frame
- 导航到书签
private void btnNavigateToBookmark_Click(object sender, RoutedEventArgs e) { System.Windows.Browser.HtmlPage.Window.NavigateToBookmark("headerDiv"); }
- 获取浏览器信息
private void btnGetBrowserInformation_Click(object sender, RoutedEventArgs e) { System.Windows.Browser.BrowserInformation bInfo = System.Windows.Browser.HtmlPage.BrowserInformation; int majorVersion = bInfo.BrowserVersion.Major; int minorVersion = bInfo.BrowserVersion.Minor; int revisionVersion = bInfo.BrowserVersion.Revision; int buildVersion = bInfo.BrowserVersion.Build; bool cookiesEnabled = bInfo.CookiesEnabled; string name = bInfo.Name; string platform = bInfo.Platform; string productName = bInfo.ProductName; string productVersion = bInfo.ProductVersion; string userAgent = bInfo.UserAgent; }
历史
- 2011年7月16日:初始版本