IE6-IE9兼容性問題列表及解決辦法_補充之四:HTC (Html Components) 功能逐漸被IE拋棄


Html Components (是HTC組件,不是智能手機,擴展名為.htc的文件就是它了)是微軟從 IE5 開始引入的概念,但自從IE全面轉向標准並逐步支持Html5之后,HTC的功能就逐步被拋棄了,而到了IE10,就徹底拋棄不再支持HTC(Html Components)了,所以如果有這方面的代碼都要做升級重寫的准備。

HTC組件的簡介如下:HTML 組件是封裝的對象,也像 ActiveX 控件一樣是“自包含”的,可以在開發完后發布給任何人。HTC 文件並不僅僅是將一個 HTML 文件的擴展名換成 .htc,它含有js或vbs腳本和 HTC 定制元素的集合。 在 HTML 文件中,HTC 擁有和頁面中其他的 DHTML 元素一樣的訪問方式。這就意味着所有 HTC 元素都可以通過 id 屬性在腳本中調用,也就是說 HTC 元素的屬性、方法都可以通過腳本來進行靈活的運用。

您可以通過下面幾種方式來執行 DHTML 行為:
定義屬性和方法。在 HTC 中分別使用 PUBLIC:PROPERTY 和 PUBLIC:METHOD 元素來定義 HTC 的屬性和方法。
定義事件:通過 EVENT 元素定義,使用元素的 fire () 方法在它們所在的頁面里 引發這些事件。
事件的環境可以通過 createEventObject () 方法設置。 在它們所在的頁面里訪問 DHTML 對象模型。HTC 中的 object 元素返回它所附屬的元素, 通過這個對象,HTC 能訪問他所在的文檔及其對象模型 (屬性、方法和事件)。
當使用 ATTACH 元素時,瀏覽器向 HTC 通報標准 DHTML 事件和兩個 HTC 專有 事件,oncontentready 和 ondocumentready。

下面幾點是IE9下HTC的變化之處:

1.在IE9下,原來不用聲明就可以在腳本(js或vbs)用的屬性變量,在IE9下必須要先聲明才可以使用了。
<PROPERTY NAME="YourVar"/>

2.在IE9下,HTC不支持最新的addEventListener,只能使用過時的attachEvent方法。

在”<<IE6-IE9兼容性問題列表及解決辦法>>第三章:Javascript and DOM, 第三節:IE8-IE9更新, 11.部分DOM 事件已過時”中提到提倡用addEventListener替換attachEvent,但是在Htc這種特殊類型的程序里,此點不適用,也就是說,Htc不支持addEventListener, 因此,我們仍需要用attachEvent。

正確的:attachEvent("onpropertychange", DoChange);
錯誤的:addEventListener("propertychange", DoChange);

3 在IE9下,HTC中的顏色需要使用css hack技巧才能奏效,例如:為顏色增加\9,來兼容IE9。
如下所示:
    var sForeColor = parentElement.style.color + "\9";
    var sBackColor = parentElement.style.background + "\9";

4.在IE9下,作為PROPERTY屬性的value作為保留字,不再支持自定義處理PUT方法,需要另起名字了。

正確的:<PUBLIC:PROPERTY NAME="value" PUT="putValue" GET="getValue"/>
錯誤的:<PUBLIC:PROPERTY NAME="Value" PUT="putValue" GET="getValue"/>

使用起來要這樣:window.document.getElementById("YourName").Value = "ZhangSan";

 

此外,Input控件readonly標記不起作用問題,及一些fire()和FireFocus()導致頁面提交問題,待將來再行補充。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM