我希望能够将option
元素拉入 Shadow DOM 中的插入点,但由于 DOMselect
是空的,我认为不会发生这种情况。无论如何,Chrome 检查器对插入点并不是很有帮助,但我已经验证了我的浏览器在执行其他插入点操作时可以正常工作,例如除了将option
元素插入到select
.
我定义了一个自定义元素,如下所示:
var CatpantsProto = Object.create(HTMLElement.prototype);
CatpantsProto.createdCallback = function(e) {
var shadow = this.createShadowRoot();
var t = document.getElementById('guy');
var clone = document.importNode(t.content, true);
shadow.appendChild(clone);
};
document.registerElement('cat-pants', {
prototype: CatpantsProto
});
这是#guy
模板:
<template id="guy">
<span>Before</span>
<select>
<content></content>
</select>
<span>After</span>
</template>
这是用法:
<cat-pants>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</cat-pants>
同样,我希望将这些option
元素插入到select
Shadow DOM 中,但是当我打开下拉列表时它们不会出现。
我认为也许“派生”HTMLElement
是问题所在,但如果我实现它也行不通HTMLSelectElement
。
我还尝试过不使用模板并直接修改shadow
' innerHTML
,但这也不起作用。
我目前的想法是元素在s、s 或soption
之外无效,并且浏览器正在抛出某种适合但没有告诉我的情况。select
datalist
optgroup
我很茫然,可能会通过创建第二个item
元素占位符来解决这个问题,该占位符将转换为option
我的createdCallback
. 啊。