Chrome拡張機能の記述。Chrome拡張機能のJS - 要素がDOMに入るたびに関数を実行
特定のタイプの要素はDOMに入ると、私はJSがかかるその要素に対して関数をこれを認識し、実行することができるようにしたい(クラス.text-special
またはタグ<span>
の種類、またはID #searchResult
などすることができます)要素自体を引数とします。
「私にこの他の要素の子要素のみを渡してください」と言いますが、それでも同じ問題です。
これは可能ですか?
Chrome拡張機能の記述。Chrome拡張機能のJS - 要素がDOMに入るたびに関数を実行
特定のタイプの要素はDOMに入ると、私はJSがかかるその要素に対して関数をこれを認識し、実行することができるようにしたい(クラス.text-special
またはタグ<span>
の種類、またはID #searchResult
などすることができます)要素自体を引数とします。
「私にこの他の要素の子要素のみを渡してください」と言いますが、それでも同じ問題です。
これは可能ですか?
あなたが親にイベントを配置し、クリックがあなたの子供になされたことを確認する必要がありhttps://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/
これは美しく働いた、ありがとう! – lollercoaster
要素が追加されているかどうかをほぼ連続して確認できますが、十分短い間隔を選択してIIFEでクロム拡張子を囲むことができます。
var frequency = null;
var readyStateFrequency = setInterval(function() {
if (document.readyState === "interactive" || document.readyState === "complete") {
clearInterval(readyStateFrequency);
frequency = setInterval(function() {
app.executeMe();
}, 10);
}
}, 10);
var app; if (!app) app = {};
(function(callback) {
var app = {
executeMe : function(){
clearInterval(frequency);
// check if the DOM element exists(using selector query) and if found perform required logic
//this.doSomething();
}
};
window.app = app;
}(window));
これはあまり役に立ちません。DOMをポーリングするだけです。私は、クエリにマッチする潜在的に追加されたDOM要素ごとに一度だけ呼び出されるリスナを設定したいと思います。 – lollercoaster
上記のコードは機能しませんか、またはあなたはそのアプローチを好まないのですか? –
jQuery .liveと.bindメソッドは廃止されました。そのため、イベントのリスンについてはわかりません。 –
MutationObserverを試みることができる何
document.getElementById("parent").onclick=function(e){
if(e.target.className=="child"){
console.log(e.target);
}
};
//test
document.getElementById("add").onclick=function(){
document.getElementById("parent").innerHTML+='<div class="child">123</div>';
};
<div id="parent"><div class="child">abc</div></div>
<button id="add">add</button>
ユーザー以外のニースは、これらの要素をクリックしません。彼らは親の子としてDOMを入力するだけです。だからそれは本当にその質問に答えません。 – lollercoaster
あなたは要素がDOMに入ることを意味しますか?それはDOMに動的に追加されますか? –
はい、動的にajax経由で追加しました – lollercoaster