ページ内のテキスト領域をクローンしていますが、クローンされた要素にはプライマリ要素のイベントがありません。クローンされた要素のすべてのイベントをクローンする方法はありますか?すべてのイベントを含む要素を複製する
var dupNode = node.cloneNode(deep);
ページ内のテキスト領域をクローンしていますが、クローンされた要素にはプライマリ要素のイベントがありません。クローンされた要素のすべてのイベントをクローンする方法はありますか?すべてのイベントを含む要素を複製する
var dupNode = node.cloneNode(deep);
ノードでgetEventListeners
を使用できますか?サポートがどのようになっているのか、コンソールでのみサポートされているのか分かりませんか?
function cloneMassive(node) {
// Clone the node, don't clone the childNodes right now...
var dupNode = node.cloneNode(false);
var events = getEventListeners(node);
for(var p in events) {
// All events is in an array so iterate that array:
events[p].forEach(function(ev) {
// {listener: Function, useCapture: Boolean}
dupNode.addEventListener(p, ev.listener, ev.useCapture);
});
}
// Also do the same to all childNodes and append them.
if (node.childNodes.length) {
[].slice.call(node.childNodes).forEach(function(node) {
dupNode.appendChild(cloneMassive(node));
});
}
return dupNode;
}
var dupBody = cloneMassive(document.body);
しかし、getEventListeners
が実際にサポートされていないようです:
Get event listeners attached to node using addEventListener
あなたが同様にあなたのノード上のすべてのイベントのプロパティをコピーする必要がある場合すべてのリストを必要とし、単純にコピーしてください:
['onclick', 'onmouseover', '...'].forEach(function(method) {
dupNode[method] = node[method];
});
私はケースの誰かが見つけるしようとしているだけで、私は私の解決策を追加し、これは古い記事であることを最近しても、この問題を解決した
var button = document.createElement("i");
var click = document.createAttribute("onclick");
click.value = "FunctionName(this)";
button.attributes.setNamedItem(click);
代わりのaddEventListener
を使用して、ちょうど関数を作成FunctionName
。あなたが使用しているオブジェクトを拡張する場合、これは役に立たないですaddEventListener
これはOPの質問にどのように答えますか? 'startRecorind'とは何ですか? 'typ'とは何ですか? – m02ph3u5
[イベントリスナーでDOMノードをコピーする方法は?](http://stackoverflow.com/questions/15408394/how-to-copy-a -dom-node-with-event-listers) – Nickolay