Silverlight 與javascript交互,javascript與ocx控件交互,他們中間的數據傳輸採用 string類型的 xml數據流
在實踐過程中遇到以下實際問題:
1> 在承載silverlight應用程序的頁面,添加ocx控件的引用的標籤必須有一個開始標誌,和一個結束標誌,(否則會出現,註冊頁面只能識別隨意的一個ocx控件)classid 爲這個ocx註冊時的guid
<div id="Eye"><object id="EyeActiveX" classid="CLSID:49337F3E-983E-4D01-9D1C-9B9CA8F021AE"
style="display: none;"> </object> </div>
相應的javascript腳本:
<script language="javascript" type="text/jscript" defer="defer">
function checkEye(strXml) { //獲取視力信息
try {
var obj = document.getElementById("EyeActiveX");
var returnValue = obj.GatherEyeValue(strXml);
return (returnValue)
}
catch (e) {
alert("Error");
}
}
</script>
對應的silverlight頁面語句:
string strXml=“......." ;//省略
object result = HtmlPage.Window.Invoke(“checkEye”, strXml); //以這個方法爲例,我們返回的結果爲一個string類型的xml字符串
拿到 result 我們就可以對他進行處理了
2> 在註冊ocx控件時,由於ocx用的動態鏈接庫的版本不一樣,造成ocx控件的功能 不能成功的在裸機上運行,於是用到了以下兩個 工具:
1. vcredist_x86.exe是針對於不同CPU所出的優化補丁執行程序,是一種基於C++的軟件需要的庫文件,有些程序在安裝相應的vcredist文件環境下才能運行
2. depends.exe 是檢測ocx等裏面動態鏈接庫的依賴關係。這裏面如果ocx缺少的dll文件,都會顯示error,作爲檢測人員的你,去網上下載相應的dll文件即可
3> 在運行承載silverlight的頁面上,首次加載所有的ocx控件,ie8安全默認的級別使ocx控件無法加載,這個時候最 傻的 辦法就是將每個客戶機的瀏覽器的安全級別降至最低,(不過有實力的公司 可以將ocx進行安全認證)
備註: vcredist_x86.exe,depends.exe 可以去網上下載,如果沒找到,在我的上傳文件裏可以找到
由於個人能力有限,有些表達或者見解有誤,請多多指出,技術上共同提高。