【发布时间】:2010-12-08 22:57:16
【问题描述】:
我正在尝试侦听由我的 ATL 对象触发的事件。我发现如果我直接在页面的 HTML 中包含如下脚本,它会正确地获取事件。
<html>
<head>
<script event="genericScriptEvent(param0, param1, param2, param3, param4, param5, param6, param7, param8)" for="CMyControl" type="text/javascript">
<.head>
...
</html>
但是,我现在动态创建 html 页面,只需将脚本片段注入到 head 标记中。我编写了以下方法,没有错误,但是一旦控件在页面上,它就不会引发任何事件。
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);
}
其中“文件路径”只包含“genericScriptEvent(param0, param1, param2, param3, param4, param5, param6, param7, param8)”
页面加载周期中何时必须存在脚本是否存在某种依赖性? (对象总是在添加脚本标签后创建)。我还能如何动态添加事件侦听器脚本?这个问题出现在IE7中。
【问题讨论】:
标签: javascript events activex atl