我有这个功能:
function main() {
var bottomArea = document.getElementsByClassName("bottom-area");
for (var i = 0; i < bottomArea.length; i++) {
var showDialogLink = document.createElement("a");
showDialogLink.innerHTML = "link";
showDialogLink.onclick = function(){showSelect(this);return false;};
bottomArea[i].insertBefore(showDialogLink, bottomArea[i].childNodes[3]);
}
}
到目前为止,代码工作得很好。当我单击新创建的链接时,它调用 showSelect(this) 函数就好了。
问题是还有另一个用户脚本/浏览器扩展(我无权访问 - 它不是我的),它基本上克隆了另一个嵌套“底部区域”div 的 div。这也没关系,但问题是它不会克隆我的函数触发器,并且该链接的那些新克隆的实例(我不确定它们的性质是什么)不再触发 showSelect(this) 函数。只有我的用户脚本创建的第一个可以。
有什么方法可以在我的链接上添加我的函数触发器,即使在克隆/复制之后也会保留?
编辑:我将编辑以显示 html 树:这是在开头:
<div>
<div class="bottom-area"></div>
</div>
我的用户脚本在“a”标签上添加了一个带有 onclick 事件监听器的链接:
<div>
<div class="bottom-area"><a>link</a></div>
</div>
另一个用户脚本基本上克隆了它(div 中有一个 textarea,它的值也被克隆了),但是没有事件监听器,所以单击克隆的链接不再触发我的函数。
EDIT2:如果有帮助,我正在创建的用户脚本是 reddit 用户脚本。我正在向评论添加小功能,并在评论文本字段下的“reddiquette”链接旁边添加一个链接。这适用于预先生成的文本字段。但是,当我单击评论树下的“回复”时,整个 div 连同文本字段、提交按钮和我的链接也被克隆到我正在回复的评论下,但我的链接本身不再具有触发功能。