我在动态包含一个object标签的html中遇到了问题。
我们调用外部服务来获取一些html片段,其中包括一个object标签、一个脚本和一个简单的html表单。我将该内容添加到页面的一个div中,然后尝试执行使用所包含对象的脚本。当我使用Firebug调试时,我可以看到代码已经正确地插入到页面中,但是当脚本尝试访问该对象时,它出现了错误。对我来说看起来像对象没有初始化。让我给你展示一些代码来说明我的意思。
getFragment使用jQuery发起ajax调用以获取内容。
插件div中包含的内容如下所示。
当我调用signer2.SetParam方法时,出现错误提示。
但是当我使用加载页面内容时原始页面时,脚本可以正常工作,因此我知道该对象上存在“SetParam”方法并且脚本可以正常工作。但是在我之后动态添加到页面时,它似乎不起作用。
我已经谷歌了很多天,但没有找到解决方法。有人知道如何让这个工作吗?
最好的问候, 亨利克
getFragment使用jQuery发起ajax调用以获取内容。
var htmlSnippet = RequestModule.getFragment( dto );
$('#plugin').html( htmlSnippet ).hide();
插件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”方法并且脚本可以正常工作。但是在我之后动态添加到页面时,它似乎不起作用。
我已经谷歌了很多天,但没有找到解决方法。有人知道如何让这个工作吗?
最好的问候, 亨利克