2012-12-07 21 views
2

我有這個JavaScript:Modernizr的完整功能似乎正在跑太早

Modernizr.load([ 
    { 
     test: Modernizr.canvas, 
     nope: ['/assets/js/excanvas.js'], 
     both: ['/assets/js/frank/pentool.js'], 
     complete : function() { 
      var cmo = new CutMeOut(settings); 
     } 
    } 
]); 

這載荷excanvas帆布應該不支持,完成後應該火「完整」的功能。 pentool.js中的CutMeOut類包含與canvas元素配合使用的代碼。然而,IE7和IE8是給這個錯誤:

Object doesn't support property or method

如果我只是加載excanvas通常是網站的作品。那麼,在excanvas已經pollyfilled問題後,我怎麼能得到var cmo = new CutMeOut(settings);

謝謝。

+0

'對象不支持屬性或method'似乎並不像完整的錯誤。 這是什麼原因造成的?什麼屬性或方法不被什麼對象支持? – Cerbrus

+0

在CutMeOut類中,它是這一行:'this.ctx = canvas.getContext('2d');'。我明白我只需要用excanvas來解決這個問題。但是,使用Modernizr的完整功能似乎不起作用。 – beingalex

+0

我明白了。加載[在這裏](http://modernizr.com/docs/#load)(ctrl + f'if(!window.jQuery){')是否有訣竅? – Cerbrus

回答

0

似乎是工作:

Modernizr.load([ 
    { 
     load: '/assets/js/frank/pentool.js', 
     complete: function() { 

      if (!document.createElement('canvas').getContext) { 
       Modernizr.load('/assets/js/excanvas.js'); 
      } else { 
       var cmo = new CutMeOut(settings); 
      } 


     } 

    }, 

    { 

     complete: function() { 
      if (!document.createElement('canvas').getContext) { 
       window.addEvent('load', function() { 
        var cmo = new CutMeOut(settings); 
       }); 
      } 
     } 
    } 

]);