我知道我做了一件非常愚蠢的事情所以希望第二双眼睛可以指出我的愚蠢。我正在尝试将Webshims polyfill用于简单的画布测试(我的第一个涉及它)。在Chrome和IE9中运行良好但在IE8和IE7(开发人员工具)中测试我收到错误:
Object不支持属性或方法'getContext'
这是我的代码
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script src="js-webshim/minified/extras/modernizr-custom.js"></script>
<script>
// set options for html5shiv
if(!window.html5){
window.html5 = {};
}
window.html5.shivMethods = false;
</script>
<script src="js-webshim/minified/polyfiller.js"></script>
<script class="example">
window.FlashCanvasOptions = {
disableContextMenu: true
};
$.webshims.setOptions({
waitReady: false
});
$.webshims.polyfill();
</script>
</head>
<body>
<canvas id="my-canvas" width="200" height="100" style="border:1px solid #c3c3c3;">
Your browser does not support the HTML5 canvas tag.
</canvas>
<script>
var ctx = $('#my-canvas').getContext('2d');
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect (10, 10, 55, 50);
ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
ctx.fillRect (30, 30, 55, 50);
window.FlashCanvasOptions = {disableContextMenu: true};
$.webshims.setOptions('canvas', {type: 'excanvas'});
</script>
</body>
</html>
如果我将画布代码包装在jquery ready函数中,我不会收到错误,但我也没有得到画布。
$(function(){
var ctx = $('#my-canvas').getContext('2d');
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect (10, 10, 55, 50);
ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
ctx.fillRect (30, 30, 55, 50);
});
我在BrowserStack中测试了它的结果相同。我究竟做错了什么?我很高兴让所有人都看到了我的朦胧......!
答案 0 :(得分:1)
已经很长时间了,但也许这会对某人有所帮助。
我遇到了同样的错误 - 没有记录错误,但画布上也没有出现任何错误。
通过添加
解决了这个问题<meta http-equiv="X-UA-Compatible" content="IE=7">
答案 1 :(得分:0)
您必须删除waitReady或将其设置为true。