◆ html メソッドでコピーすると script タグが再実行される
◆ 自分で使う部分なら注意して対処できるけどライブラリの中で使われてると対処に困る

jQuery の html メソッドは innerHTML と違って script タグを実行します

<div id="a">
</div>
<div id="b">
<script>console.log(100)</script>
</div>
$("#a").html($("#b").html())

と書いて要素をコピーした場合 #b の中の script タグが再実行されます

clone を使えば実行されません

$("#a").append($("#b").clone().contents())

しかし ライブラリの場合は内部のいろいろなところで html メソッドを使った innerHTML 設定がされています
ライブラリのコードを全部みるのはさすがに大変なので script タグを含む要素をライブラリに渡さないのが安全かもしれません


例えば UI を楽に作れるライブラリを作ったときのことです
fetch でサーバから JSON を取得してライブラリに渡してテーブルを生成します
受け取るデータはユーザ入力の HTML を含んでいて script タグも許容しています
テーブルは簡単なまとめ情報のみで 行のクリックでダイアログで詳細表示がされるものです

ダイアログに表示するときに script タグが含まれていれば実行すればいいのですが テーブル生成のときにもライブラリが html メソッドを使っていたせいで実行されていました
テーブルに表示する以上 HTML を渡さないといけないので ライブラリを使う以上どうしようもないです

ライブラリの修正は大変ですし あまりしたくない選択です
なので受け取ったデータをライブラリに渡す前に HTML をパースして script タグを取り除いたのを使ってテーブル生成
元のデータもどこかに保存しておいてダイアログの詳細表示ではこっちを使うということにして対処しました
すごくムダな手間がかかってます

script タグという意図しないところで実行されると困るものなのに意識せず当たり前のように使われてるのが嫌なところです
この機能って百害あって一利なしとしか思えないのに代わりの innerHTML を設定するメソッドがないんでしょう
prop で innerHTML 変更するのことで可能ですが長くなりますし script タグを意識してなければわざわざそんなことせず html メソッド使う人ばかりでしょう