2008-11-10 3 views
2

Je programme Outlook 2003 complément à l'aide de Visual Studio 2008.contrôle de l'utilisateur dans le dossier Page d'accueil n'initialise pas

Add-in utilise le contrôle de l'utilisateur intégré dans la page d'accueil de dossier, comme il y était recommandé. Voici le code HTML pour la page d'accueil de dossier:

<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> 

Le code HTML est inséré dans la propriété HTMLDocument de l'explorateur actif pendant événement FolderSwitch.

Dans le cas OnLoad de contrôle, une référence à l'instance d'application est utilisée (qui a été passé en paramètre à sa méthode Initialize), mais parfois contrôle n'est pas initialisés avant l'événement OnLoad est déclenché. Il est juste créé, mais la méthode Initialize n'est jamais invoquée.

Est-ce que quelqu'un a des expériences similaires? Est-ce le comportement habituel?

+0

Est-ce toujours une question utile. Aussi, peut-être qu'une prime est-elle en ordre si elle l'est? –

+0

Je crois que c'est encore utile, mais je ne travaille plus sur ce projet, donc je n'ai pas pu vérifier une réponse. Et c'est un subtil qui fait un choix définitif de la bonne réponse encore plus difficile. –

Répondre

0

Je n'ai aucune expérience avec Outlook 2003 ou toute autre version de celui-ci, MAIS je connais le HTML et JavaScript, donc je recommande de ne pas déclencher instantanément la méthode dans certains "navigateurs/clients" les choses ont besoin de continuer à l'intérieur de la méthode ne sont pas encore disponibles. Il vaut mieux ajouter un délai lors de l'appel de la méthode et peut-être que cela va résoudre votre problème, car cela a résolu beaucoup de mes problèmes dans le passé.

Exemple:

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

NOTE: il pourrait être onLoad ou onbodyload.

Questions connexes