2

我正在使用 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>

在 FolderSwitch 事件期间,HTML 代码被插入到活动资源管理器的 HTMLDocument 属性中。

在控件的 OnLoad 事件中,使用了对应用程序实例的引用(作为参数传递给它的 Initialize 方法),但有时在触发 OnLoad 事件之前控件未初始化。它刚刚创建,但从未调用 Initialize 方法。

有人有类似的经历吗?这是通常的行为吗?

4

1 回答 1

1

我没有使用 Outlook 2003 或任何其他版本的经验,但我知道 html 和 JavaScript,所以我建议不要立即触发该方法,因为在某些“浏览器/客户端”中使用的值或需要它的东西continue 里面的方法还不可用。您最好在调用该方法时添加延迟,也许这会解决您的问题,因为这解决了我过去的许多问题。

例子:

document.addEventListener('onload', function (e) { yourFunction(params); }, false);

注意:它可能是 onload 或 onbodyload。

于 2012-08-07T15:15:32.707 回答