私はこの機能を持っています:
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) 関数が正常に呼び出されます。
問題は、別の userscript/browser 拡張機能 (アクセスできない - それは私のものではありません) があることです。これは基本的に、「bottom-area」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内にテキストエリアがあり、その値も複製されます)が、イベントリスナーがないため、複製されたリンクをクリックしても関数がトリガーされなくなります。
EDIT2:それが役立つ場合、私が作成しているユーザースクリプトはredditユーザースクリプトです。コメントに小さな機能を追加し、コメント テキスト フィールドの下の「reddiquette」リンクのすぐ隣にリンクを追加しています。これは、事前に生成されたテキスト フィールドで機能します。ただし、コメント ツリーの [返信] をクリックすると、div 全体とテキスト フィールド、送信ボタン、およびリンクが返信中のコメントの下に複製されますが、リンク自体に関数トリガーがありません。