我使用Visual Studio 2008编写Outlook 2003加载项。
加载项在文件夹的主页中使用嵌入式用户控件,就像它一样 推荐的。这是文件夹主页的HTML代码:
<html><head><style type="text/css">body{overflow: hidden}</style></head>
<body rightmargin = '0' leftmargin ='0' topmargin ='0' bottommargin = '0' onload='OnBodyLoad()'>
<script>
function OnBodyLoad()
{
var outlook = window.external.OutlookApplication;
FolderView.Initialize(outlook);
}
</script>
<object classid='clsid:C718A848-6C31-4897-8DA8-0EDE3A4C6F14'
id='FolderView' VIEWASTEXT width='100%' height='100%' />
</body>
</html>
HTML代码插入到活动资源管理器的HTMLDocument属性中 FolderSwitch事件。
在控件的OnLoad事件中,使用对应用程序实例的引用 (它作为参数传递给它的Initialize方法),但有时候 在触发OnLoad事件之前未初始化控件。它刚刚创建, 但是从不调用Initialize方法。
有人有类似的经历吗?这是通常的行为吗?
答案 0 :(得分:1)
我没有使用Outlook 2003或其他任何版本的经验,但我知道html和JavaScript,所以我建议不要立即触发该方法导致某些“浏览器/客户端”内部使用的值或事物需要它继续在方法内部尚不可用。你最好在调用方法时添加一个延迟,这可能会解决你的问题,因为它解决了我过去的许多问题。
示例:
document.addEventListener('onload', function (e) { yourFunction(params); }, false);
注意:可能是onload或onbodyload。