2011年7月22日 星期五

在Silverlight應用程式存取HTML DOM

Silverlight應用程式可以直接存取內嵌它的網頁HTML DOM或是讀取查詢字串的內容,你可以利用System.Windows.Browser.HtmlPage類別來達成。

  • 使用Visual Studio 2010 建立一個Silverlight應用程式,並建立測試的網站

image

  • 在測試用的HTML網頁中,加入一個div

image

  • 加一個Button到Silverlight應用程式 MainPage.xaml

image

  • 在Button的Click事件中,加入程式碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Browser;

namespace AccessHTMLDOM {
    public partial class MainPage : UserControl {
        public MainPage ( ) {
            InitializeComponent ( );        }

        private void button1_Click ( object sender , RoutedEventArgs e ) {
            HtmlDocument myDoc = HtmlPage.Document;
            HtmlElement ele = myDoc.GetElementById ( "myTitle" );
            if ( ele != null ) {
                ele.SetStyleAttribute ( "background-color" , "Red" );
            }
        }
    }
}

  • 執行測試網頁,按下Button,便會變更Div的背景顏色

image

若要存取查詢字串,則可以使用以下步驟,

  • 在MainPage.xaml加一個Button,一個Label
  • 在Button的Click事件中,加入程式碼,讀取QueryString中id對應的值,然後加到UserControl的Resources集合中

if ( HtmlPage.Document.QueryString.ContainsKey ( "id" ) ) {
               string myID = HtmlPage.Document.QueryString [ "id" ].ToString ( );
               this.Resources.Add ( "id" , myID );
           } else
               this.Resources.Add ( "id" , "-1" );
           label1.Content = this.Resources [ "id" ].ToString ( );

  • 執行網頁在網址後方輸入查詢字串,按下Button就可以取得值

http://localhost:12432/AccessHTMLDOMTestPage.aspx?id=abc

沒有留言:

總瀏覽量