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

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

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

      父窗口、子窗口和Silverlight之間的相互調用

      啊哈~ 爺爺,爸爸,兒子~ 三代同堂~

      前兩天做 silverlight 的東西,主頁面打開一個子頁面,然后子頁面中包含一個 silverlight 應用程序

      那難免會涉及到他們三者相互調用的問題

      其實,他們之間的調用還是很簡單的~

       

       

      基礎篇

       

      一、父頁面調用子頁面中的JS

      我們先創建一個子窗體

      var win

      $(
      function () {
      Root
      = $('#Root').val();//設置根目錄
      });

      function OpenPlayer(id, type, add) {
      //這里是用來限制同一個窗口只能彈出一次的
      //其實就算不做限制,只要window.open參數中的name相同,就不會重復打開
      //window.open中的參數可以參考別的文章,有很多
      if (win == null || win.closed) {
      win
      = window.open('http://loaclhost/sl.aspx', 'win', 'width=870,height=650,top=1,left=0,scrollbars=0,resizable=0,status=1', true);
      }

       

      那怎么調用呢?

      this.alert('hello world!');
      win.alert(
      'hello world!');
      win.onload
      = function () { this.alert('test'); };

      眾所周知,第一行是在本窗口彈出一個提示框(this可以一般都會省略~)

      那其實,this和win指向的是同類型,不同的對象罷了

       

      所以,他們的方法都是一樣的。

      第二行就是在子窗口中彈出一個提示框的代碼。

      你還可以在父窗體中寫子窗體的事件~

      第三行的作用是,當子窗體加載完成后,父窗口彈出提示框。

       

       

       

      二、子窗體調用父窗體

      這個和上面差不多,當父窗體打開一個子窗體后,你可以這樣訪問到父窗體

      window.opener

      這個對象就是父窗體,直接調用相應的函數即可

       

       

       

      三、子窗體調用silverlight函數或對象

      這個在MSND上有詳細介紹,中文的~在這里,我幫大家提一下主要的幾個步驟(調用silverlight對象的方法就不貼出來了,里面有)

      另附 傳送門:

       

      1、現在silverlight中,給需要被調用的函數加上一個attribute——ScriptableMember

      代碼

      // MyScriptableManagedType.cs
      using System.Windows.Browser;

      namespace HB {
      public class MyScriptableManagedType {
      [ScriptableMember()]
      public string MyToUpper(string str) {
      return str.ToUpper();
      }

      [ScriptableMember()]
      public string Name { get; set; }
      }
      }

       

       

      2、在構造函數中注冊這個對象

      MyScriptableManagedType smt = new MyScriptableManagedType();
      HtmlPage.RegisterScriptableObject(
      "mySLapp", smt);

      //如果這個函數不是外部類中的函數,而是sl主體的函數,那直接傳入this指針就可以了

       

       

      3、打開slverlight所在的頁面

      在 Silverlight 對象標記中,添加具有值"pluginLoaded"的 onLoad 屬性。
      下面的示例演示用于 Silverlight 控件引用的 HTML 標記。

      代碼
      <object data="data:application/x-silverlight-2,"
      type
      ="application/x-silverlight-2" width="100%" height="100%">
      <param name="source" value="ClientBin/HB.xap"/>
      <param name="onerror" value="onSilverlightError" />
      <param name="onLoad" value="pluginLoaded" />
      <!-- ... -->
      </object>

       

       

      4、在頁上現有的 script 元素中,添加 pluginLoaded 方法的 JavaScript 函數。
      使用 getHost 方法獲取對 Silverlight 控件的引用。下面的示例演示 pluginLoaded 方法的 JavaScript 代碼。

       

      代碼
      <script type="text/javascript">
      var slCtl=null;

      function pluginLoaded(sender,args){ // HTML version
      slCtl = sender.getHost();
      alert( slCtl.Content.mySLapp.MyToUpper(
      "test string"));
      }
      </script>

       

       

       

       

      四、silverlight調用子窗體中的js

      同樣,也是MSDN上的文章~  傳送門: 

       

      這個超級簡單,直接:

      HtmlPage.Window.Invoke("MethodName", args);

      前面一個參數是函數名,后面的參數是這個函數需要傳入的參數

       

       

       

      提高篇

       

      五、父頁面打開子頁面的時候,直接給silverlight傳入參數

      這個主要是在初始化的時候用到

      在第一部部分中,我們打開了 http://loaclhost/sl.aspx 這個子窗口

      這時候,我們可以用GET方式傳入一些參數 例如:http://loaclhost/sl.aspx?id=1

      然后在silverlight中這樣訪問:


       string id = HtmlPage.Document.QueryString["id"];

       

         

       

      六、怎么樣才能把子窗口前置?

      我的子頁面中的silverlight應用程序其實是一個音樂播放器,然后,所以子頁面一般是最小化的。

      但是,當我在silverlight應用程序里彈出MessageBox的時候它還是處于最小化狀態… 這樣對用戶很不友好。

       

      想要把子窗口前置的話,只能通過在父窗口中調用 win.focus() 函數

      但是,我們只要稍微處理一下,在父窗口,子窗口,sl中就都可以實現這個目的了 

       

      所以可以這樣做:

      1、在父窗口中寫一個函數,叫Focus()

      然后調用 win.focus();

      2、在子窗口中寫一個函數,叫Focus()

      調用 window.opener.Focus()

      3、最后,如果想讓silverlight應用程序前置,你在父窗口或者子窗口中調用Focus()這個函數,也可以再silverlight中調用子窗口的Focus()函數

       

       

       

      七、怎么判斷silverlight已經加載完成?

      下面有幾個思路,有對有錯

      (√)在silverlight應用程序的構造函數中,調用子頁面或者父頁面(通過子頁面)的js  【這個方法可行,但是略顯麻煩】

      (×)在子頁面中 寫 window.onload 事件  【這個事件觸發的時候silverlight不一定加載完成】

      (√)還記得第三部分,第3步里的這個嗎? <param name="onLoad" value="pluginLoaded" />  【推薦做法】

              加入這條以后,silverlight加載完成后就出觸發子頁面的這個函數  函數名可以更改

      posted @ 2010-08-15 22:12  Dozer  閱讀(2225)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 无码精品人妻一区二区三李一桐| 凹凸国产熟女精品视频| 秋霞电影网| 乱女乱妇熟女熟妇综合网| 国产成人一区二区三区视频免费| 曰本丰满熟妇xxxx性| 国内熟妇与亚洲洲熟妇妇| 中文字幕人妻中出制服诱惑| 三级黄色片一区二区三区| 日本少妇自慰免费完整版| 日日爽日日操| 国产熟妇另类久久久久久| 国产极品丝尤物在线观看| 五月综合网亚洲乱妇久久| a级亚洲片精品久久久久久久| 麻豆精品一区二区视频在线| 最近中文字幕完整版hd| 蜜桃av无码免费看永久| 99久久精品国产熟女拳交| 伊人久久大香线蕉av一区二区| 国产精品白丝久久av网站| 精品国产一区二区三区av性色| 久久亚洲精品中文字幕波多野结衣 | 18禁动漫一区二区三区| 国产精品日韩中文字幕| 狠狠五月深爱婷婷网| 亚洲av第一区二区三区| 国产在线观看播放av| 国产婷婷综合在线视频| 一区天堂中文最新版在线| 久久中文字幕一区二区| 人成午夜免费视频在线观看| 成人午夜免费无码视频在线观看| 国产成人综合在线女婷五月99播放 | 加勒比精品一区二区三区| 日本强伦片中文字幕免费看| av永久免费网站在线观看| 116美女极品a级毛片| 成av免费大片黄在线观看 | 国产睡熟迷奷系列网站| 国产精品v欧美精品∨日韩|