【发布时间】:2016-01-03 19:20:18
【问题描述】:
我有以下代码,它创建了一个用 Shadow DOM 封装的自定义元素:
'use strict'
var proto = Object.create(HTMLElement.prototype);
proto.createdCallback = function() {
var root = this.createShadowRoot();
var divEl = document.createElement('div');
divEl.setAttribute("id", "container");
divEl.innerHTML =
"<input id='input' type='text'>"
+ "<br>"
+ "Result: <span id='result'></span>"
+ "<br><button onclick='performTask()'>Run</button>";
root.appendChild(divEl);
};
document.registerElement('custom-ele', {
prototype: proto
});
这个想法是,当单击“运行”时,将从输入元素中获取输入并进行处理(在 performTask() 中),然后将输出放入“#result”中。我的两个问题是:
- 如何从 Shadow DOM 的输入字段中获取值?
- 如何将输出放入#result?
This 以前的堆栈溢出帖子看起来可以回答我的问题,但是所有建议的链接都不再有效,所以我想知道是否有人可以指出我正确的方向:)
附:我宁愿不使用模板,因为并非所有浏览器都支持 HTML 导入,我希望我的所有自定义元素代码都包含在一个文件中。
【问题讨论】:
-
我建议在创建或事件委托后附加事件。
-
这里面的javascript在哪里?
标签: javascript web-component shadow-dom custom-element