silverlight.js詳解

iDotNetSpace發表於2009-03-13

微軟公司的Silverlight是一個瀏覽器的外掛,就像Adobe公司的Flash一樣.在Silverlight SDK中提供了一個幫助建立Silverlight物件的Silverlight.js檔案.在你呼叫javascript檔案是你可能會發現在客戶端已經安裝silverlight時會生成一段html程式碼.


如要需要了解這個js檔案都做了什麼,我們需要把它分解開來研究.在這個js檔案中一共有11個方法.


01. Silverlight.detectUserAgent();
02. Silverlight.isInstalled(d);
03. Silverlight.createObject(l,g,m,j,k,i,h);
04. Silverlight.supportedUserAgent();
05. Silverlight.buildHtml(c,d);
06. Silverlight.default_error_handler(e,b);
07. Silverlight.createObjectEx(b);
08. Silverlight.buildPromptHTML(l);
09. Silverlight.__cleanup();
10. Silverlight.followFWLink(a);
11. Silverlight.HtmlAttributeEncode(c);

你可能會注意到這些方法的引數不是很明確.這是因為Microsoft公司需要把js檔案做的儘可能的小.所以呢,他去除了長的名稱,空格,換行等是這個js檔案程式碼都寫在1行裡.這樣不太利於瞭解,但是卻給了快速的載入.

要建立Silverlight物件.我們可以看在Silverlight 1.0 SDK中的CreateSilverlight.js檔案.他用了上邊所提到的第三個方法Silverlight.createObject(l,g,m,j,k,i,h)和第七個方法Silverlight.createObjectEx(b)這第七個方法接受的引數是一個陣列,我想Ex大概就是擴充套件的意思吧.

看著程式碼檔案和註釋檔案可以看出他們所代表的意思.


l= xaml source file
g= parent hosting element
m= silverlight control id
j= properties
k= events
i= initParams
h= context

這個createObjectEx方法只是呼叫的createObject方法,也沒什麼特別的.

這個createObject方法呼叫了createObjectEx傳遞進來的引數.

  1. 呼叫Silverlight.isInstalled(version)方法來判斷silverlight的版本是否已經被安裝.版本的名稱就是j這個引數.
  2. 載入Silverlight.__cleanUp()方法來登出windows事件
  3. 載入onload和onerror方法.(引數為k)
  4. 呼叫Silverlight.BuildHtml(a,b)方法來生成silverlight物件的html
  5. 如果Hosting不為空就把生成的html加入Hosting中否則的話就返回生成好的程式碼.

最後一行程式碼很有趣,如果你想控制已經生成好的html那你可以傳遞一個null來代替hosting元素來得到生成好的html.如果我們看到了生成好的html,我們可以發現一個正常的object標籤.如果你用Safari瀏覽器你會看到一個embed標籤.因為safari不完全的支援object標籤.

這個初始化引數是可以選擇的,你可以新增自己定義的引數.剛開始看上去感覺是有點怪異的,但是這個javascript程式碼是用來生成html的.這個特性是非常有用的. 舉個例子:
sitename=wpfdevelopment,url=www.wpfdevelopment.com.

生成的html程式碼就會帶這樣的引數:



Safari瀏覽器是這樣:

<embed>

這個初始引數會被javascript生成在silverlight物件中.舉個例子:silverlightControlId.InitParams會返回一個初始引數的列表.

這第二個引數為上下文引數,這個引數允許事件的呼叫.舉個例子,如果你有一個在onload是需要呼叫的事件:

events: {onLoad: onLoadFunction }

function onLoadFunction(control,context,rootElement) {
//do something
}

這個事件可以用在onLoad或onError時候.只要在events(k)時傳遞進去就可以了.

剩下的引數j是一個陣列.可以對很多的屬性進行設定.

  1. background=背景顏色,預設為白色
  2. isWindowless=布林值.是否透明
  3. width=寬度
  4. height=高度
  5. ignoreBrowserVer=忽略silverlight外掛是否已經在當前的瀏覽器中安裝.預設為false
  6. maxFramerate=最大的幀數,預設為24幀每秒.
  7. version=silverlight外掛版本.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-567173/,如需轉載,請註明出處,否則將追究法律責任。