【发布时间】:2011-01-14 02:27:59
【问题描述】:
在我的 html 中动态包含对象标记时遇到问题。 我们有一个外部服务,我们调用它来获取一些 html-fragment,它包括一个 object-tag、一个脚本和一个简单的 html-form。我获取该内容并将其添加到页面中的 div 中,然后尝试执行使用包含对象的脚本。当我使用 Firebug 进行调试时,我可以看到代码已正确插入页面中,但脚本在尝试访问对象时出错。在我看来,该对象未初始化。让我给你看一些代码来说明我的意思。
getFragment 使用 jQuery 进行 ajax 调用以获取内容。
var htmlSnippet = RequestModule.getFragment( dto );
$('#plugin').html( htmlSnippet ).hide();
plugin-div中包含的内容是这样的
<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>
尝试使用“签名者”对象的 javascript 如下所示:
function doSign(){
var signer2 = document.getElementById("signer");
retVal = signer2.SetParam('TextToBeSigned', 'some value...');
... and then some more
}
当我调用 signer2.SetParam 方法时,我得到一个错误提示
Object #<an HTMLObjectElement> has no method 'SetParam'
但是当我使用在页面加载脚本时加载内容的原始页面时,我知道对象上存在“SetParam”方法并且脚本有效。但不知何故,当我之后将它动态添加到页面时它不起作用。
过去几天我在 Google 上搜索了很多次,但都没有成功。 有没有人知道如何让它发挥作用?
最好的问候, 亨里克
【问题讨论】:
标签: javascript jquery html