有一个HTML5 conformance test suite与原型测试HTMLCanvasElement
。我们可以通过脚本删除HTML5 Canvas标签的“getContext”属性吗?
测试失败的Safari浏览器,火狐,但通过对Opera在Windows 7
测试有哪些尝试删除HTMLCanvasElement
的getContext
财产的脚本,并进一步尝试读取getContext
应该给undefined
。
delete window.HTMLCanvasElement.prototype.getContext;
_assertSame(window.HTMLCanvasElement.prototype.getContext, undefined, "window.HTMLCanvasElement.prototype.getContext", "undefined");
这个测试失败了的WebKit(Safari浏览器),因为getContext
酒店DontDelete
属性,所以它不会允许脚本删除此属性。
在HTML5规范中是否有任何描述说明通过脚本删除getContext
属性是有效的?
DontDelete似乎毫无用处,因为在WebKit中可以只执行'window.HTMLCanvasElement.prototype.getContext = null'。 – pimvdb
是的,尽管我们可以用NULL覆盖或替换属性(getContext)的值,但属性“getContext”仍然存在,它保存从JS绑定图层查询的最后分配的值或默认值。这个测试说的是,查询window.HTMLCanvasElement.prototype.getContext应该在删除后返回一个未定义的值(属性不存在)。 – Priyanka