javascript - 如何创建名称中包含特殊字符的自定义元素?
问题描述
我有一个在外部库中注册的自定义 HTML 元素,其名称包含特殊的 Unicode 字符。我想动态创建这种元素,所以我尝试使用document.createElement
,但这样做会导致 Chrome 和 Firefox 出现运行时错误,因为显然元素的名称无效。只有 Safari 允许以这种方式创建元素。
这是一个简化的示例:
// External code
class TestElement extends HTMLElement
{ }
customElements.define("emotion-", TestElement); // OK
console.log("custom element registered");
// My code
document.createElement("emotion-"); // Error in Chrome and Firefox
console.log("custom element created");
请注意,HTML 规范本身引用emotion-
了一个有效自定义元素名称的示例。
如何在 JavaScript 中创建这样的自定义元素?
解决方案
您可以innerHTML
改为document.createElement
在 DOM 中创建元素
// External code
class TestElement extends HTMLElement
{ }
customElements.define("emotion-", TestElement); // OK
console.log("custom element registered");
// My code
box.innerHTML = "<emotion- class='el'></emotion->"
console.log("custom element created");
.el { border: 1px solid red }
<div id=box></div>
推荐阅读
- haskell - 您如何在参数中使用 StdGen 类型?
- r - Desktop Application to Run R Scripts
- python - Insert 3D model in mplot3D
- hyperledger-fabric - 动态地将频道添加到现有网络
- r - Using igraph/network packages, how do I determine if network is fully connected (each vertex can reach each other vertex somehow)
- typescript - 打字稿:将类型转换为 json 对象时,“类型中缺少属性 getName”
- r - Need help in R to create a new table based on specific elements from several different tables
- python - 迭代字典字典时“没有足够的值来解包”
- swift - Im trying to make a my current weather temperature displayed in notification badge's
- html - Cannot override bootstrap with css