javascript - 监听 Shadow Dom 的事件

标签 javascript html shadow-dom

如何监听来自 Shadow DOM 的鼠标悬停事件。我确实尝试了下面的片段代码,但什么也没发生。单击“添加”按钮后会生成模板实例,我为其注册鼠标悬停事件,并希望在鼠标悬停时触发此事件。

非常感谢

HTML

<body>
    <h1 class="text-center">Test import Node</h1>
    <div class="container-fluid" style=" background-color: #FAFAFA"></div>
    <div class="col-md-12" id = 'root'>
        <button type="button" class="btn btn-default go" id='_add'><i class="fa fa-pencil-square-o"></i> Add</button>
        <div id = 'textbox' style="height: 200px; width: 400px; font-size: 18px"></div>
    </div>
    <template id = 'area'>
        <div style="height : 400px; width: 300px ; background-color: red"></div>
    </template>
</body>

Javascript

$(document).ready(function() {
    var button = document.querySelector('#_add');
    button.addEventListener('click', function(){
        check();
    }, false);
});
function check(){
     // document.querySelector('#textbox').innerHTML = "Ukie";
     var content = document.querySelector('#area').content;
     content.addEventListener('mouseover', function(){
        display();
     }, false);
     var root = document.querySelector('#root');
     root.appendChild(document.importNode(content, true));
}

function display(){
    document.querySelector('#textbox').innerHTML = "Here";
}

最佳答案

根据 addEventListener 文档:

The event target may be an Element in a document, the Document itself, a Window, or any other object that supports events (such as XMLHttpRequest).

因此,当您调用 addEventListener 时,元素必须存在于 DOM 中。

作为解决方法,您可以使用 event delegation使用jquery on 方法来实现相同的效果。这是一个工作jsfiddle通过稍微调整你的样本。

$('#root').on('mouseover', '.dyn', function(){
    display();
});

这里绑定(bind)的元素将是模板内容的父元素(您确信它在绑定(bind)事件时会存在),并且您将内容 html 的选择器作为参数传递给 .on 方法。因此,每当子事件(在本例中是您的模板内容)上发生事件时,它就会冒泡到父事件并触发回调。

关于javascript - 监听 Shadow Dom 的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32423596/

相关文章:

javascript - 针对 JavaScript 中的特定元素?

html - 如何使用 cin 将带有空格的文本插入到 C++ 中的文本文档中?

html - 正确使用 <small> 标签,或者如何标记 "less important"文本

html - angularjs:依赖于json数据的动态html

javascript - JS 自定义元素获取内部 HTML

javascript - 切换自定义元素 Polymer 中的纸张对话框

javascript - 检查 element 是否是 Shadow dom 中的根文档

javascript - AngularJS:使用回调在循环中获取数据

javascript - 无法检索与 PhoneGap 2.2.0 的连接状态

javascript - 如何让我的提交按钮启动 JQ 功能?