Silverlight與HTML雙向互動
Silverlight具備很好的使用者體驗,但有時需要在頁面的佈局上進行特殊處理,比如作為webpart整合到Sharepoint中等等。
HTML和Silverlight之間的雙向互動可以更靈活的使用Silverlight進行開發,上午摸索了一下,記錄在此。
一,向Silverlight傳遞資料,實現個性化載入
Silverlight在HTML中的引用是:
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="ClientBin/VideoCenter.xap"/> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" /> <param name="minRuntimeVersion" value="4.0.50401.0" /> <param name="autoUpgrade" value="true" /> <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration:none"> <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style.:none"/> a> object> 這種引用外掛的方式提供了一系列的引數來實現個性載入,上面的程式碼中我們加了一行引數
<param name="initParams" value="CategoryId=1" />
我們可以在Silverlight中處理這些引數,開啟Silverlight應用程式的App程式碼檔案,加上接收引數的程式碼
private void Application_Startup(object sender, StartupEventArgs e) { if (e.InitParams.Count != 0) { foreach(var item in e.InitParams) { this.Resources.Add(item.Key, item.Value); } } this.RootVisual = new MainPage(); } 我們看到對e.InitParams的處理,即可得到了HTML中傳進來的引數,實現個性化載入:
if(App.Current.Resources["CategoryId"]!=null) { int cateId = int.Parse(App.Current.Resources["CategoryId"].ToString()); CategoryItem c = new CategoryItem(); c.CategoryID = cateId; this.gridOfList.Children.Add(c); }
二,Silverlight呼叫HTML中的指令碼資源,實現自身的樣式等修改
首先我們可以在載入Silverlight元件的頁面上編寫一段Javascript指令碼
function InvokePlayer(videoId) { document.getElementById("divCategory").style.display = "none"; var player = document.getElementById("divPlayer"); player.style.width = "100%"; player.style.height = "600px"; }
怎麼在Silverlight中呼叫這個指令碼呢?我們可以在某個事件中呼叫Silverlight提供的類方法
System.Windows.Browser.HtmlPage.Window.Invoke("InvokePlayer", videoId);
當然類似的方法還有幾個:
(HtmlPage.Window.GetProperty("InvokePlayer") as ScriptObject)InvokeSelf("Good Function!");
HtmlPage.Window.Eval("document.getElementById('result')") as HtmlElement… 即可實現呼叫指令碼。
經過以上的兩個方法即可實現HTML和Silverlight之間雙向傳遞資料的功能。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-681359/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 通過Websocket與gRPC互動 | gRPC雙向資料流的互動控制系列(2)WebRPC
- 【unity2022與html互動】UnityHTML
- gRPC雙向資料流的互動控制(go語言實現)| gRPC雙向資料流的互動控制系列(1)RPCGo
- Servlet實現、與html的簡單互動ServletHTML
- 2020年的UWP(5)——UWP和Desktop Extension的雙向互動
- 阿里雲資料中臺升級Quick Audience實現企業與消費者雙向互動阿里UI
- (譯)通過WebChannel/WebSockets與QML中的HTML互動WebHTML
- HTML 單引號與雙引號HTML
- Phaser遊戲框架與HTML Dom元素之間的通訊互動遊戲框架HTML
- js 與WKWebView 互動JSWebView
- 透過Nginx實現gRPC服務的負載均衡 | gRPC雙向資料流的互動NginxRPC負載
- vue 雙向繫結(v-model 雙向繫結、.sync 雙向繫結、.sync 傳物件)Vue物件
- Java與Excel的互動!-JavaExcel
- ReactNative與iOS的互動ReactiOS
- Flutter 與Native原生互動Flutter
- Flutter 與 Android 的互動FlutterAndroid
- flash如何與js互動?JS
- Spring 容器與 Servlet互動SpringServlet
- grpc雙向流RPC
- 雙向lstm原理
- HTML表單標籤詳解:如何用HTML標籤打造互動網頁?HTML網頁
- html5怎樣和Native App進行互動?HTMLAPP
- 聊聊雙11互動主動法中前端技術亮點前端
- Silverlight3.0正式版(Silverlight3_Tools)離線安裝
- 通過Nginx實現gRPC服務的負載均衡 | gRPC雙向資料流的互動控制系列(3)NginxRPC負載
- 禁止雙指放大HTMLHTML
- ajax與XML檔案互動XML
- Android webview 與 js(Vue) 互動AndroidWebViewJSVue
- Android與WebView資料互動AndroidWebView
- Flutter使用JsBridge與WebView互動FlutterJSWebView
- H5 與 APP 互動!H5APP
- C#與Python互動方式C#Python
- Vulkan與DX11互動
- MySQL雙機互備熱備自動切換KVMySql
- C#開發WPF/Silverlight動畫及遊戲系列C#動畫遊戲
- Object.defineProperty與雙向繫結、資料監聽Object
- OGG雙向條件複製的部署與測試
- 雙向賦能:AI與資料庫的修行之道AI資料庫
- 基於 HTML5 Canvas 的可互動旋鈕元件HTMLCanvas元件