2016-04-24 1 views
0

Je crée une application O365 et j'ai 2 fichiers .aspx, lorsque l'utilisateur clique sur l'application de messagerie O365, je veux que chacune de ces pages soit chargée en fonction de l'objet du mail.Comment charger différentes pages dans l'application de messagerie O365 basée sur regex

Scénario 1: Mail sujet contient '#' résultat: charge page1

Scénario 2: sujet Mail ne contient pas '#' résultat: charge page2

J'ai essayé d'avoir un .js intermédiaire fichier où j'ai écrit la logique, mais quand je fais window.location = "path_to_aspx_file", seul le html est chargé mais les fichiers js ne s'exécutent pas.

Ma mise en œuvre actuelle:

Je LandingLogic.js

(function() { 
    "use strict"; 

    //The Office initialize function must be run each time a new page is loaded 
    Office.initialize = function (reason) { 
     $(document).ready(function() { 
      var item = Office.cast.item.toItemRead(Office.context.mailbox.item); 
      var sub = item.subject; 
      if (sub.indexOf("some text") > -1) {         
       window.location = "http://localhost:51776/File1.aspx"; 
      } 
      else { 
       window.location = "http://localhost:51776/File2.aspx"; 
      } 
     }); 
    }; 
})(); 

Après un peu de tâtonner. Je suis capable de naviguer vers chacun de ces fichiers maintenant, mais je ne suis pas sûr comment accéder à l'objet mail à partir de File1.aspx et File2.aspx.

+0

Pouvez-vous préciser ce que vous entendez par « quand je fais window.load = "path_to_aspx_file", seul le html est chargé mais les fichiers js ne s'exécutent pas "? Il semble que vous êtes sur la bonne voie, mais je n'ai aucune idée de la question que vous rencontrez. – MrPiao

+0

Parlez-vous d'une application utilisant l'API graphique ou un complément Outlook? –

+0

@MrPiao: Toutes mes excuses pour la faute de frappe, j'utilise window.location = "fichier path_to_aspx", j'ai ajouté plus de détails à la question maintenant. –

Répondre

0

Avez-vous initialisé le contexte Office avant d'utiliser l'API JavaScript d'Office pour obtenir le sujet? Pour rediriger la page HTML facilement, nous pouvons inclure le code JavaScript comme ci-dessous:

Home.js:

/// <reference path="../App.js" /> 

(function() { 
    "use strict"; 

// The Office initialize function must be run each time a new page is loaded 
Office.initialize = function (reason) { 
    $(document).ready(function() { 
     app.initialize(); 

     RedirectHTMLPage(); 
    }); 
}; 

function RedirectHTMLPage() { 
    var subject = Office.context.mailbox.item.subject; 
    if (subject.indexOf("#") != -1) { 
     window.location.href = "https://localhost:44300/page1.aspx"; 


    } else { 
     window.location.href = "https://localhost:44300/page2.aspx"; 

    } 

} 

})(); 

La page HTML pour rediriger:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8" /> 
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 
<title></title> 
<script src="../../Scripts/jquery-1.9.1.js" type="text/javascript"></script> 

<link href="../../Content/Office.css" rel="stylesheet" type="text/css" /> 
<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script> 

<!-- To enable offline debugging using a local reference to Office.js, use:      --> 
<!-- <script src="../../Scripts/Office/MicrosoftAjax.js" type="text/javascript"></script> --> 
<!-- <script src="../../Scripts/Office/1/office.js" type="text/javascript"></script> --> 

<link href="../App.css" rel="stylesheet" type="text/css" /> 
<script src="../App.js" type="text/javascript"></script> 

<link href="Home.css" rel="stylesheet" type="text/css" /> 
<script src="Home.js" type="text/javascript"></script> 
</head> 
<body> 


</body> 
</html> 

J'ai essayé avoir un fichier .js intermédiaire où j'ai écrit la logique, mais quand je fais window.load = "path_to_aspx_file", seul le html est chargé mais les fichiers js ne s'exécutent pas.

Pourriez-vous partager les détails que vous en utilisant le « window.load »?

+0

Toutes mes excuses pour l'erreur, j'utilise window.location. J'ai une mise en œuvre similaire maintenant, pourriez-vous me dire comment je peux accéder à l'objet du courrier de page1.aspx et page2.aspx maintenant? –

0

Fei Xue La réponse est correcte. si vous voulez obtenir l'objet de file2.aspx, ajouter office.js objet référence et un accès identique à file1.aspx dans l'événement Office.initialize

<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script>