如何获得聚合物组件内部元素的实际事件锁定目标
How do I get the actual event keydown target of an element inside a polymer component?
防止退格导航返回的代码通常采用类似于这种方法的方法,即除了Input、TextArea等一小部分已知元素类型之外,窗口keydown事件会被阻止退格。
这对聚合物自定义元素中的元素不太适用,因为keydown事件目标类型是自定义元素的类型,而不是获得keydown的实际元素。每个自定义元素的类型都不同。这使得目标元素类型的阻挡退格无法维持。
有没有办法知道在聚合物元素中,按下键的实际元素的类型?或者有更好的方法吗?
只要可能,最好尝试设计您的项目,以避免破坏封装。这就是在跨越阴影边界时调整event.target
的原因。
但是,event.path
属性是一个转义图案填充,它包含已看到事件的所有元素的数组,应该允许您解决此问题。
从事件获取元素:div、INPUT、TEXTAREA。。。
e.target.nodeName
一种方法是深入挖掘自定义元素的shadowdom(及其shadowdom),以获得真正的活动元素。像这样的东西在Chromium 36:上工作
function getActiveElem(target) {
do {
if (target.shadowRoot != null) {
target = target.shadowRoot.activeElement;
}
} while(target.shadowRoot != null);
return target;
}
window.addEventListener("keydown", function(e) {
if (e.keyCode == 8) {
var preventKeyDown;
var d = getActiveElem(e.target); // Get the real active element
switch (d.tagName.toUpperCase()) {
case 'INPUT':
// more smarts here
preventKeyDown = false;
break;
// case TEXTAREA, et al.
}
// e.preventDefault() if preventKeyDown
}
}
相关文章:
- Javascript事件.锚的目标问题
- Firefox事件.目标问题
- AngularJs的ng-click$事件将子元素作为目标传递
- 在放置目标时,输入并离开自定义事件
- 在事件目标上,将css波浪号从element1添加到element2
- 修改鼠标事件对象的“目标”以进行事件委派
- 如何切换浏览器事件目标
- 如果放置目标被完全占用,则不会触发HTML5-拖放-ondragover事件
- 捕获给定类型的所有事件,而不考虑气泡/目标
- 无法让悬停事件使用 jQuery UI 持续时间参数或 CSS 处理目标元素的同级元素
- 通过事件目标,我怎么知道它是复选框还是无线电
- 从嵌套函数中选择事件目标
- 如何从子元素中删除数据目标和数据切换,或禁止元素触发事件
- 如何在 Javascript onbeforeunload 事件中获取网页上链接的目标 URL
- 如何获取锚标记的事件目标
- 流星事件的目标是在带有内部图标的链接上表现奇怪
- onchange事件显示目标元素的所有文本值,原因
- 使标记成为事件的目标,而不是img
- 如何获得聚合物组件内部元素的实际事件锁定目标
- IE js事件错误.目标! = =