【发布时间】:2011-09-30 18:26:20
【问题描述】:
有一个HTML5 conformance test suite 对HTMLCanvasElement 的原型进行测试。
此测试在 Safari、Firefox 上失败,但在 Windows 7 上通过 Opera。
测试有一个脚本试图删除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。 -
是的,即使我们可以用 NULL 覆盖或替换属性 (getContext) 的值,属性“getContext”仍然存在,它保存着从 JS 绑定层查询到的最后分配的值或默认值。这个测试说的是,查询 window.HTMLCanvasElement.prototype.getContext 应该在它被删除后返回一个未定义的值(属性不存在)。
标签: javascript html canvas html5-canvas