一種方法是深入到自定義元素的陰影(和它的陰影)中,以獲得真正的活動元素。 像這樣工作在鉻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
}
}
這會失敗的幾個紙元素有多個shadowRoot但不會太難支持,但Scotts解決方案無論如何都比較簡單。 – 2014-09-15 06:42:47