<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一步一步學Silverlight 2系列(21):如何在Silverlight中調(diào)用JavaScript

      概述

      Silverlight 2 Beta 1版本發(fā)布了,無論從Runtime還是Tools都給我們帶來了很多的驚喜,如支持框架語言Visual Basic, Visual C#, IronRuby, Ironpython,對JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步學Silverlight 2系列》文章將從Silverlight 2基礎知識、數(shù)據(jù)與通信、自定義控件、動畫、圖形圖像等幾個方面帶您快速進入Silverlight 2開發(fā)。

      Silverlight中內(nèi)置了對于HTML、客戶端腳本等的支持。很多情況下,我們編寫的Web應用程序中用了一些JavaScript或者AJAX框架,我們希望能夠在Silverlight調(diào)用某些腳本方法,或者說在Silverlight中觸發(fā)某個腳本的執(zhí)行,這時就需要用到在Silverlight中調(diào)用JavaScript,本文將簡單介紹這一內(nèi)容。

      使用GetProperty獲取腳本對象

      先來看一個簡單的例子,在Silverlight測試頁面中放入一個div用作顯示信息:

      <div id="result"></div>

      編寫一段簡單的JavaScript代碼:

      <script type="text/javascript">
          function Hello(message)
          {
              var resultSpan = $get("result");
              resultSpan.innerText = "Hello " + message;
          }
      </script>

      再編寫一個簡單的輸入信息界面:

      <StackPanel Background="#CDFCAE" Orientation="Vertical">
          <StackPanel Height="40">
              <TextBlock Text="Calling Browser Script from Silverlight"
                         Foreground="Red"></TextBlock>
          </StackPanel>
          <StackPanel Orientation="Horizontal">
              <TextBox x:Name="input" Width="340" Height="40" Margin="20 0 20 0"></TextBox>
              <Button x:Name="submit" Width="120" Height="40" Background="Red"
                  Content="調(diào) 用" FontSize="20" Foreground="Red" Click="submit_Click"></Button>
          </StackPanel>
      </StackPanel>

      實現(xiàn)對腳本的調(diào)用:

      private void submit_Click(object sender, RoutedEventArgs e)
      {
          ScriptObject hello = HtmlPage.Window.GetProperty("Hello") as ScriptObject;
          hello.InvokeSelf(this.input.Text);
      }

      ScriptObject提供了任何客戶端腳本的封裝,不僅僅是JavaScript,使用其他的AJAX框架也可以,如jQuery等。然后調(diào)用InvokeSelf()方法,傳入?yún)?shù),這里ScriptObject總共提供了兩個方法,Invoke和InvokeSelf,如果我們只調(diào)用腳本對象的自身,就可以使用InvokeSelf,如果腳本對象中還有其它的函數(shù)等,可以使用Invoke傳入名稱進行調(diào)用,兩個方法的定義如下:

      [SecuritySafeCritical]
      public virtual object Invoke(string name, params object[] args);
      
      [SecuritySafeCritical]
      public virtual object InvokeSelf(params object[] args);

      運行上面的示例:

       TerryLee_Silverlight2_0097

      輸入TerryLee后點擊調(diào)用,可以看到確實調(diào)用了客戶端腳本:

      TerryLee_Silverlight2_0098 

      使用CreateInstance創(chuàng)建腳本對象

      除了使用上面所說的使用HtmlPage.Window.GetProperty方法獲取腳本對象之外,還有一種替代方法,即使用HtmlPage.Window屬性的CreateInstance方法。還是使用上面的示例,我們在測試頁中加入如下一段腳本,使用prototype為myHello添加了顯示的功能:

      <script type="text/javascript">
          myHello = function(message)
          {
              this.Message = message;
          }
          myHello.prototype.Display = function()
          {
              var resultSpan = $get("result");
              resultSpan.innerText = "Hello " + this.Message;
          }
      </script>

      使用HtmlPage.Window.CreateInstance創(chuàng)建腳本對象

      private void submit_Click(object sender, RoutedEventArgs e)
      {
          ScriptObject script = HtmlPage.Window.CreateInstance("myHello",this.input.Text);
      
          object result = script.Invoke("Display");
      }

      運行后的效果跟上面的示例是一樣的,如:

      TerryLee_Silverlight2_0097

      輸入文本信息后:

      TerryLee_Silverlight2_0099 

      使用HtmlPage.Window.Eval()

      最后還有一種機制,就是使用HtmlPage.Window.Eval()方法,只要我們給該方法傳入一段字符串,它都會作為JavaScript來執(zhí)行。做一個簡單的測試,我們再修改一下上面的示例代碼:

      private void submit_Click(object sender, RoutedEventArgs e)
      {
          HtmlPage.Window.Eval(this.input.Text);
      }

      運行后我們在文本框中輸入一段腳本alert('TerryLee');,效果如下所示:

      TerryLee_Silverlight2_0100

      既然HtmlPage.Window.Eval()可以執(zhí)行一段腳本,并且將執(zhí)行的結(jié)果以對象形式返回,我們可以使用它來獲取DOM元素。如下面這段代碼:

      private void submit_Click(object sender, RoutedEventArgs e)
      {
          HtmlElement result = HtmlPage.Window.Eval("document.getElementById('result')") as HtmlElement;
      
          string message = result.GetAttribute("innerHTML");
          HtmlPage.Window.Alert(message);
      }

      運行后效果如下,獲取的result確實就是我們定義的div。

      TerryLee_Silverlight2_0101 

      對AJAX框架的支持

      前面說過,ScriptObject不僅僅是對JavaScript的封裝,也支持其它的AJAX框架,現(xiàn)在我們用jQuery來測試一下,編寫一小段代碼:

      <script type="text/javascript">
          function myHello(message)
          {
              $("#result").text("Hello " + message);
          }
      </script>

      調(diào)用腳本

      private void submit_Click(object sender, RoutedEventArgs e)
      {
          ScriptObject script = HtmlPage.Window.GetProperty("myHello") as ScriptObject;
      
          script.InvokeSelf(this.input.Text);
      }

      運行后的結(jié)果與前面的示例是一樣的:

      TerryLee_Silverlight2_0102 

      結(jié)束語

      本文介紹了在Silverlight中調(diào)用JavaScript的幾種方法,下一篇我將介紹如何在JavaScript中調(diào)用Silverlight。

      posted @ 2008-03-12 18:24  TerryLee  閱讀(22020)  評論(46)    收藏  舉報
      主站蜘蛛池模板: 亚洲精品动漫一区二区三| 蜜臀久久综合一本av| 国产AV无码专区亚洲AV潘金链 | 无限看片在线版免费视频大全| 九九久久人妻一区精品色| 国产欧美日韩精品丝袜高跟鞋| 男女裸交免费无遮挡全过程| 国产av丝袜熟女一二三| 少妇精品视频一码二码三| 成人看的污污超级黄网站免费 | 黄色免费在线网址| 国产成人亚洲欧美二区综合| 亚洲18禁一区二区三区| 精品少妇人妻av无码久久| 国产成人精品亚洲资源| 午夜国产小视频| 亚洲日韩精品一区二区三区无码| 精品国偷自产在线视频99| 国产成人综合久久亚洲av| 在线涩涩免费观看国产精品| 性欧美老人牲交xxxxx视频| 精品一区二区三区不卡| 岛国中文字幕一区二区| 久久精品亚洲中文字幕无码网站 | 国产成人无码免费视频在线| 她也色tayese在线视频| 日韩国产成人精品视频| 宅男噜噜噜66在线观看| 国产亚洲一区二区三区啪| 99国产精品永久免费视频| 色爱av综合网国产精品| 国产AV影片麻豆精品传媒| 亚洲人成色777777老人头| 日韩一区二区三区在线视频| 亚洲香蕉网久久综合影视| 国产伦精品一区二区三区| 国产久久热这里只有精品| 国产亚洲精品中文字幕| 强行交换配乱婬bd| 起碰免费公开97在线视频| 六月丁香婷婷色狠狠久久|