У меня проблема с динамическим включением тега объекта в мой html. У нас есть внешняя служба, которую мы вызываем, чтобы получить некоторый html-фрагмент, он включает в себя объект-тег, скрипт и простую html-форму. Я беру этот контент и добавляю его в div на моей странице, а затем пытаюсь выполнить скрипт, который использует включенный объект. Когда я отлаживаю использование Firebug, я вижу, что код правильно вставлен на страницу, но скрипт получает сообщение об ошибке при попытке доступа к объекту. Мне кажется, что объект не инициализирован. Позвольте мне показать вам некоторый код, чтобы показать, что я имею в виду.Проблема с использованием динамически добавленного html-объекта из javascript
getFragment выполняет вызов ajax с использованием jQuery для получения содержимого.
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>
The 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 Является ли это одним из тех методов IE, которые поддерживает Firefox только потому, что он должен для совместимости? Я действительно не могу найти документацию на `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