我有一個問題,動態地在我的HTML中包含對象標籤。 我們有一個外部服務,我們調用它來獲得一些html片段,它包括一個對象標籤,一個腳本和一個簡單的html表單。我將這些內容添加到我的頁面中的div中,然後嘗試執行使用包含對象的腳本。當我使用Firebug進行調試時,可以看到代碼已正確插入到頁面中,但腳本在嘗試訪問該對象時出現錯誤。在我看來,該對象沒有初始化。讓我給你看一些代碼來舉例說明我的意思。使用動態添加html對象從javascript的問題
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」的方法。但不知何故,當我動態地將其添加到頁面後,它不起作用。
在過去的幾天裏我沒有運氣,我搜索了很多東西。 有沒有人有任何想法如何讓這個工作?
最好的問候, 亨裏克
感謝您的幫助,但這並不能解決我的問題。實際上我試圖在對象鏈接到的應用程序上調用SetParam方法。它應該是可用的,它可以工作,如果我加載頁面加載對象時,而不是動態地將其添加到頁面後。後來在腳本中,我嘗試通過執行signer2.PerformAction('Sign')來調用另一個方法,該方法也不起作用。 – 2010-12-01 14:24:37
@Henrik Firefox是否支持這些僅限於IE的方法之一?我真的無法在任何地方找到任何有關`SetParam`的文檔。 – aditya 2010-12-01 14:28:04
據我所知,SetParam方法在對象標籤上不可用。它實際上是一種可以在底層對象本身上調用的方法。有點像他們做這個網頁時,他們做mySwf.myFlexFunction(..)http://livedocs.adobe.com/flex/3/html/help.html?content=passingarguments_5.html – 2010-12-01 14:43:27