2012-12-19 72 views
5

我現在處於一種情況,我需要使用一些複雜的代碼來處理Kinetic.js和canvas元素來處理IE8。任何使Kinetic.js支持IE8的方法?

正式的,Kinetic.js沒有支持IE8的計劃。

我嘗試使用webshims lib但Kinetic.js以下代碼失敗:

Kinetic.Canvas = function(width, height) { 
    this.element = document.createElement('canvas'); 
    this.context = this.element.getContext('2d'); //<-- Error here 

    // set dimensions 
    this.element.width = width; 
    this.element.height = height; 
}; 

的錯誤是「對象不支持屬性或方法‘的getContext’」。這對我來說很有意義,因爲我不希望IE8文檔創建的元素畫布實現canvas元素的方法,但是如果已經創建了<canvas>元素,則可以使用webshims並且可以使用這些方法。但是,強制Kinetic.js使用單個畫布元素會破壞其一些功能(因爲它會動態創建畫布對象)。

這是我的選擇,以實現這一目標?

+0

可能是Chrome Frame可以幫到你嗎? http://www.google.com/chromeframe?quickenable=true – Flot2011

+0

@ Flot2011這是一種可能性,謝謝。 – Alpha

+1

對於對此感興趣的人 - http://fabricjs.com/可能值得考慮。它支持IE8(雖然我沒有測試它的效果)。如果您對Canvas或SVG沒有那麼挑剔,請考慮http://raphaeljs.com/(IE8支持對基本載體很有用,但對文本和任何使用png圖像作爲填充的垃圾) – user568458

回答

3

簡單的答案是「不」。

正如一位評論者所說,Google Chrome Frame是一個好的替代品,它必須將Chrome的渲染引擎安裝爲IE插件。

the excanvas project,聽起來可能聽起來不錯。這是試圖在VML(SVG)中實現畫布,以便IE 6-8可以使用畫布。

Excanvas是可怕的。特別是對於任何動畫,它不能做一些畫布圖像處理的東西。並且在近4年內尚未更新。我強烈建議不要使用它,但它在那裏供您考慮。

+0

謝謝。在回到您的問題之前,我確實嘗試了WebShims,FlashCanvas,ExCanvas和其他混合選項(甚至修補Kinetic.js)。沒有什麼對我有用,所以我會接受我的失敗。 – Alpha

+0

其悲傷但真實。不支持IE8是唯一現實的選擇,如果你想真正利用所有帆布必須提供的優勢,如KineticJS –

相關問題