亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

子窗口、父窗口和Silverlight之間的相互調(diào)用

 更新時間:2010年08月16日 23:35:14   作者:  
前兩天做 silverlight 的東西,主頁面打開一個子頁面,然后子頁面中包含一個 silverlight 應(yīng)用程序那難免會涉及到他們?nèi)呦嗷フ{(diào)用的問題
其實,他們之間的調(diào)用還是很簡單的~
基礎(chǔ)篇
一、父頁面調(diào)用子頁面中的JS
我們先創(chuàng)建一個子窗體
復(fù)制代碼 代碼如下:

var win
$(function () {
Root = $('#Root').val();//設(shè)置根目錄
});
function OpenPlayer(id, type, add) {
//這里是用來限制同一個窗口只能彈出一次的
//其實就算不做限制,只要window.open參數(shù)中的name相同,就不會重復(fù)打開
//window.open中的參數(shù)可以參考別的文章,有很多
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);
}

那怎么調(diào)用呢?
復(fù)制代碼 代碼如下:

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

眾所周知,第一行是在本窗口彈出一個提示框(this可以一般都會省略~)
那其實,this和win指向的是同類型,不同的對象罷了
所以,他們的方法都是一樣的。
第二行就是在子窗口中彈出一個提示框的代碼。
你還可以在父窗體中寫子窗體的事件~
第三行的作用是,當子窗體加載完成后,父窗口彈出提示框。
二、子窗體調(diào)用父窗體
這個和上面差不多,當父窗體打開一個子窗體后,你可以這樣訪問到父窗體
window.opener
這個對象就是父窗體,直接調(diào)用相應(yīng)的函數(shù)即可
三、子窗體調(diào)用silverlight函數(shù)或?qū)ο?
這個在MSND上有詳細介紹,中文的~在這里,我?guī)痛蠹姨嵋幌轮饕膸讉€步驟(調(diào)用silverlight對象的方法就不貼出來了,里面有)
另附 傳送門:
1、現(xiàn)在silverlight中,給需要被調(diào)用的函數(shù)加上一個attribute——ScriptableMember
復(fù)制代碼 代碼如下:

// 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、在構(gòu)造函數(shù)中注冊這個對象
復(fù)制代碼 代碼如下:

MyScriptableManagedType smt = new MyScriptableManagedType();
HtmlPage.RegisterScriptableObject("mySLapp", smt);
//如果這個函數(shù)不是外部類中的函數(shù),而是sl主體的函數(shù),那直接傳入this指針就可以了

3、打開slverlight所在的頁面
在 Silverlight 對象標記中,添加具有值"pluginLoaded"的 onLoad 屬性。
下面的示例演示用于 Silverlight 控件引用的 HTML 標記。
復(fù)制代碼 代碼如下:

<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、在頁上現(xiàn)有的 script 元素中,添加 pluginLoaded 方法的 JavaScript 函數(shù)。
使用 getHost 方法獲取對 Silverlight 控件的引用。下面的示例演示 pluginLoaded 方法的 JavaScript 代碼。
復(fù)制代碼 代碼如下:

<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調(diào)用子窗體中的js
同樣,也是MSDN上的文章~ 傳送門:
這個超級簡單,直接:
HtmlPage.Window.Invoke("MethodName", args);
前面一個參數(shù)是函數(shù)名,后面的參數(shù)是這個函數(shù)需要傳入的參數(shù)
提高篇
五、父頁面打開子頁面的時候,直接給silverlight傳入?yún)?shù)
這個主要是在初始化的時候用到
在第一部部分中,我們打開了 http://loaclhost/sl.aspx 這個子窗口
這時候,我們可以用GET方式傳入一些參數(shù) 例如:http://loaclhost/sl.aspx?id=1
然后在silverlight中這樣訪問:

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

六、怎么樣才能把子窗口前置?
我的子頁面中的silverlight應(yīng)用程序其實是一個音樂播放器,然后,所以子頁面一般是最小化的。
但是,當我在silverlight應(yīng)用程序里彈出MessageBox的時候它還是處于最小化狀態(tài)… 這樣對用戶很不友好。
想要把子窗口前置的話,只能通過在父窗口中調(diào)用 win.focus() 函數(shù)
但是,我們只要稍微處理一下,在父窗口,子窗口,sl中就都可以實現(xiàn)這個目的了
所以可以這樣做:
1、在父窗口中寫一個函數(shù),叫Focus()
然后調(diào)用 win.focus();
2、在子窗口中寫一個函數(shù),叫Focus()
調(diào)用 window.opener.Focus()
3、最后,如果想讓silverlight應(yīng)用程序前置,你在父窗口或者子窗口中調(diào)用Focus()這個函數(shù),也可以再silverlight中調(diào)用子窗口的Focus()函數(shù)

七、怎么判斷silverlight已經(jīng)加載完成?
下面有幾個思路,有對有錯
(√)在silverlight應(yīng)用程序的構(gòu)造函數(shù)中,調(diào)用子頁面或者父頁面(通過子頁面)的js 【這個方法可行,但是略顯麻煩】
(×)在子頁面中 寫 window.onload 事件 【這個事件觸發(fā)的時候silverlight不一定加載完成】
(√)還記得第三部分,第3步里的這個嗎? <param name="onLoad" value="pluginLoaded" /> 【推薦做法】
加入這條以后,silverlight加載完成后就出觸發(fā)子頁面的這個函數(shù) 函數(shù)名可以更改

相關(guān)文章

  • js實現(xiàn)下拉框選擇要顯示圖片的方法

    js實現(xiàn)下拉框選擇要顯示圖片的方法

    這篇文章主要介紹了js實現(xiàn)下拉框選擇要顯示圖片的方法,涉及針對js操作select的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-02-02
  • 微信小程序?qū)D片進行canvas壓縮的方法示例詳解

    微信小程序?qū)D片進行canvas壓縮的方法示例詳解

    這篇文章主要給大家介紹了關(guān)于微信小程序?qū)D片進行canvas壓縮的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 微信小程序開發(fā)(二)圖片上傳+服務(wù)端接收詳解

    微信小程序開發(fā)(二)圖片上傳+服務(wù)端接收詳解

    本篇文章主要介紹了微信小程序開發(fā)(二)圖片上傳+服務(wù)端接收,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • JS指定音頻audio在某個時間點進行播放

    JS指定音頻audio在某個時間點進行播放

    這篇文章主要介紹了JS指定音頻audio在某個時間點進行播放,獲取當前音頻audio的長度,音頻時長格式轉(zhuǎn)化,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • html2canvas圖片跨域問題圖文詳解

    html2canvas圖片跨域問題圖文詳解

    我們在進行圖片保存的時候經(jīng)常會發(fā)現(xiàn)圖片跨域了,下面下面這篇文章主要給大家介紹了關(guān)于html2canvas圖片跨域問題的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 微信小程序?qū)崿F(xiàn)拼圖小游戲

    微信小程序?qū)崿F(xiàn)拼圖小游戲

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)拼圖小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • JS事件綁定的常用方式實例總結(jié)

    JS事件綁定的常用方式實例總結(jié)

    這篇文章主要介紹了JS事件綁定的常用方式,結(jié)合實例形式總結(jié)分析了javascript三種常見的事件綁定原理與操作技巧,需要的朋友可以參考下
    2019-03-03
  • JavaScript多態(tài)與封裝實例分析

    JavaScript多態(tài)與封裝實例分析

    這篇文章主要介紹了JavaScript多態(tài)與封裝,結(jié)合實例形式分析了JavaScript多態(tài)與封裝的概念、功能、優(yōu)缺點以及相關(guān)問題與注意事項,需要的朋友可以參考下
    2018-07-07
  • Ajax實現(xiàn)搜索框提示功能

    Ajax實現(xiàn)搜索框提示功能

    這篇文章介紹了Ajax實現(xiàn)搜索框提示功能的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • JS實現(xiàn)頁面數(shù)據(jù)懶加載

    JS實現(xiàn)頁面數(shù)據(jù)懶加載

    這篇文章主要為大家詳細介紹了JS實現(xiàn)頁面數(shù)據(jù)懶加載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02

最新評論