[英]Unable to attach new click event handlers on HTML element using Puppeteer
[英]Unable to attach event to an element in contextual fragment
我嘗試將事件附加到上下文片段中的元素,然后將此元素附加到正文。 但事件沒有被附加。
var range = document.createRange();
var listE1 = "<div>Hello World</div>"
range.selectNode(document.getElementsByTagName("div").item(0));
var element = range.createContextualFragment(listEl);
element.querySelector("div").addEventListener("click", function () {
alert("hello");
}, true);
document.body.appendChild(element);
將此元素附加到 body 后,div 根本沒有任何事件
在尋找相同的答案后,我偶然發現了這里,我知道這是一個非常古老的問題,希望這有助於或指出更好的方向。
range.createContextualFragment(listEl);
返回一個DocumentFragment 。 簡而言之, DocumentFragment 是最小化的 DOM 對象。 它沒有 attachEventListener。
如果你願意,你可以使用DOMParser或使用document.createElement
這是一個如何使用 DOMParser 的示例
let listE1 = "<div>Hello World</div>"
let element = new DOMParser().parseFromString(listE1 , 'text/html').documentElement;
element.addEventListener("click", function () {
alert("hello");
}, true);
document.body.appendChild(element);
希望這可以幫助。
只有很多小錯誤,代碼應該很容易運行:我們應該將片段添加到文檔,然后添加事件偵聽器
var range = document.createRange(); var listE1 = "<div id='hello'>Hello World</div>" range.selectNode(document.getElementsByTagName("div").item(0)); var element = range.createContextualFragment(listE1); // listel -> liste1 document.body.appendChild(element); // should add to document first document.querySelector("div#hello").addEventListener("click", function() { // element->document alert("hello"); }, true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.