Я пытаюсь прослушивать события, запускаемые моим объектом ATL. Я обнаружил, что если я включу скрипт, как показано ниже, непосредственно в HTML страницы, он правильно уловит событие.
<html>
<head>
<script event="genericScriptEvent(param0, param1, param2, param3, param4, param5, param6, param7, param8)" for="CMyControl" type="text/javascript">
<.head>
...
</html>
Однако сейчас я динамически создаю html-страницу, и мне просто нужно вставить фрагмент скрипта в тег заголовка. Я закодировал следующий метод, ошибок нет, но он не вызывает никаких событий, когда элемент управления находится на странице.
function loadJavascriptEventHandler(element, filePath, objectName, callbackFunction)
{
var head = element.doc.getElementsByTagName("head")[0];
var tag = element.doc.createElement('script');
tag.setAttribute('type', 'text/javascript');
tag.setAttribute('src', filePath );
tag.setAttribute('for', objectName );
tag.setAttribute('event', callbackFunction );
head.appendChild(tag);
}
Где «filepath» просто содержит «genericScriptEvent (param0, param1, param2, param3, param4, param5, param6, param7, param8)»
Есть ли какая-то зависимость от того, когда скрипт должен существовать в цикле загрузки страницы? (объект всегда создается после добавления тега script). Как еще я могу динамически добавить сценарий прослушивателя событий? Эта проблема возникает в IE7.