Ich habe ein Problem mit der dynamischen Aufnahme eines Objekt-Tags in meinem HTML. Wir haben einen externen Dienst, den wir aufrufen, um ein HTML-Fragment zu bekommen, es enthält ein Objekt-Tag, ein Skript und ein einfaches HTML-Formular. Ich nehme diesen Inhalt und füge ihn zu einem div auf meiner Seite hinzu und versuche dann, das Skript auszuführen, das das enthaltene Objekt verwendet. Beim Debuggen mit Firebug kann ich sehen, dass der Code korrekt in die Seite eingefügt wurde, aber das Skript erhält einen Fehler, wenn es versucht, auf das Objekt zuzugreifen. Es scheint mir, dass das Objekt nicht initialisiert wird. Lassen Sie mich Ihnen einen Code zeigen, um zu verdeutlichen, was ich meine.Problem mit dynamisch hinzugefügtem HTML-Objekt von Javascript
getFragment macht einen AJAX-Aufruf mit jQuery, um den Inhalt zu erhalten.
var htmlSnippet = RequestModule.getFragment(dto);
$('#plugin').html(htmlSnippet).hide();
Die mitgelieferten Inhalt in plugin-div sieht aus wie dieses
<div id="plugin" style="display: none; ">
Browser:
Chrome
<object name="signer" id="signer" type="application/x-personal-signer2"></object>
<form method="POST" name="signerData" action="#success">
<input name="nonce" value="ASyhs..." type="hidden">
<input name="signature" value="" type="hidden">
<input name="encodedTbs" value="U2l..." type="hidden">
<input name="provider" value="nexus-personal_4X" type="hidden">
<input type="submit" onclick="doSign()" value="Sign">
</form>
</div>
Die Javascript, das die „Unterzeichner“ Objekt zu verwenden versucht, sieht wie folgt aus:
function doSign(){
var signer2 = document.getElementById("signer");
retVal = signer2.SetParam('TextToBeSigned', 'some value...');
... and then some more
}
Wenn ich die signer2.SetParam-Methode aufruft, erhalte ich die Fehlermeldung
Object #<an HTMLObjectElement> has no method 'SetParam'
Aber wenn ich die Originalseite benutzen, wo der Inhalt geladen wird, wenn die Seite mit dem Skript lädt funktioniert, damit ich weiß, dass die ‚SetParam‘ Methode für das Objekt vorhanden ist, und dass das Skript funktioniert. Aber irgendwie funktioniert es nicht, wenn ich es dynamisch nachträglich zur Seite hinzufüge.
Ich habe dies die letzten paar Tage ohne Glück viel gegoogelt. Hat jemand eine Idee, wie man das zur Arbeit bringt?
Mit freundlichen Grüßen, Henrik
Hallo und danke für die Antwort! Sie haben möglicherweise Recht, wenn Sie sagen, dass jQuery Probleme beim Anhängen und beim Auslösen der Ereignisse hat, wenn das Objekt später hinzugefügt wird. Für den Moment habe ich gelöst, indem ich die leeren objec-Tags beim ersten Laden der Seite einschließe und später dynamisch andere Parameter hinzufüge, wenn ich ihre Werte kenne und es funktioniert. Wenn ich in Zukunft Zeit bekomme, werde ich Ihre vorgeschlagene Lösung testen. –