如何创建一个 Web Component 并将其放置在表单中,使其像任何输入元素一样能够在提交时发送到服务器?换句话说,是否可以使用 Web Components 来创建自定义输入元素?
在测试之前,请使用以下浏览器配置选项:
about:flags => 启用实验性的 WebKit 功能/启用实验性的 Web 平台
about:config => dom.registercomponents.enabled
以启用document.registerElement
。
使用document.registerElement
的extends
参数来扩展本地输入元素:
/* Cross-browser fallback */
document.registerElement = document.registerElement || document.register;
/* Element registration using x-tag format */
var MegaButton = document.registerElement('x-button', {
prototype: Object.create(HTMLButtonElement.prototype),
extends: 'button'
});
参考资料
extends
属性并执行以下两个操作之一:1.使用构造函数动态创建元素,即new MegaButton()
2.在扩展元素上使用[is]
属性,即<button is="mega-button"></button>
。在*两种情况下,创建的元素将是扩展类型(在本例中为button
),这意味着要为自定义元素设置样式,您需要使用[is="mega-button"]
作为选择器,而不是mega-button
。但至少这些元素将与阴影DOM和表单一起工作。 - zzzzBov元素来使用CodeMirror(http://codemirror.net/)。我本来想使用
<textarea>`元素,但似乎它们的影子DOM无法被覆盖。 - zzzzBov[is]
属性的观点,但每次想要创建自定义元素时都需要更新标记似乎有些笨拙。哦,那就是委员会设计。 - Paul Sweatte