Nun, ich glaube, dass dies mit der Kombination von MutationObserver
und jQuery Event Bindings erreicht werden kann.
Sie können den Betrachter auf das DOM so (Beispielcode entlehnt here) registrieren:
$(function() {
var target = document.querySelector('body');
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
// Check if nodes are added
if (mutation.addedNodes.length > 0) {
mutation.addedNodes.forEach(function(node) {
// Check if the added node is an iframe
if (node.nodeName === "IFRAME") {
$(node).on("load", function() { alert("hello from iframe"); });
}
});
}
});
});
// configuration of the observer (need to research more on this)
var config = {
attributes: true,
childList: true,
characterData: true
};
// pass in the target node, as well as the observer options
observer.observe(target, config);
});
Die oben werden die Änderungen in DOM beobachten, und die hinzugefügten Elemente auf das DOM dynamisch überprüfen.
Ich glaube, Sie können diese Funktion nutzen, um das Ereignis zur Laufzeit an die hinzugefügten iFrames zu binden, wie ich oben getan habe.
nur nicht vergessen unobserve, nachdem Sie mit diesem fertig sind:
observer.disconnect();
Haben Sie überprüfen [diese Antwort] (https://stackoverflow.com/a/24604300/2019247)? – 31piy
So legen Sie es für den spezifischen Iframe fest, den ich bereits kenne, aber er ist anders als meine Frage. – omega
Sie können versuchen, '$ ('# theiframe')' in '$ (" iframe ")' zu ändern. Dies sollte für alle iframes funktionieren, denke ich. – 31piy