2016-04-24 11 views
0

Ich erstelle eine O365 App und ich habe 2 .aspx-Dateien, wenn der Benutzer auf die O365 Mail App klickt, möchte ich jede dieser Seiten basierend geladen werden das Thema der Post.So laden Sie verschiedene Seiten in O365 Mail App basierend auf Regex

Szenario 1: Mail Subjekt enthält '#' Ergebnis: load page1

Szenario 2: Mail Subjekt nicht enthält '#' Ergebnis: load page2

ich versucht habe einen Zwischen Js mit Datei, wo ich die Logik geschrieben habe, , aber wenn ich window.location = "path_to_aspx_file", nur die HTML-geladen wird, aber die js-Dateien nicht ausgeführt werden.

Meine aktuelle Implementierung:

Ich habe 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"; 
      } 
     }); 
    }; 
})(); 

Nach ein wenig um Fummelei. Ich kann nun zu jeder dieser Dateien navigieren, aber ich bin mir nicht sicher, wie ich von File1.aspx und File2.aspx auf den Betreff zugreifen kann.

+0

Können Sie erklären, was Sie unter „wenn ich window.load tun = "path_to_aspx_file", nur der html wird geladen, aber die js-Dateien laufen nicht "? Es sieht so aus, als ob du auf dem richtigen Weg bist, aber ich habe keine Ahnung, auf welches Problem du kommst. – MrPiao

+0

Sprechen Sie über eine App, die die Graph-API oder ein Outlook-Add-In verwendet? –

+0

@MrPiao: Entschuldigung für den Tippfehler, ich benutze window.location = "path_to_aspx Datei", ich habe jetzt mehr Details zu der Frage hinzugefügt. –

Antwort

0

Haben Sie den Office-Kontext vor der Verwendung der Office JavaScript-API initialisiert, um den Betreff zu erhalten? So leiten Sie einfach die HTML-Seite, können wir die JavaScript wie unten enthalten:

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

    } 

} 

})(); 

der HTML-Seite zum Umleiten:

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

Ich habe versucht, Ich habe eine Zwischen-JS-Datei, wo ich die Logik geschrieben habe, aber wenn ich window.load = "path_to_aspx_file" mache, wird nur der html geladen, aber die js-Dateien laufen nicht.

Würden Sie bitte teilen Sie die Details, die Sie das „window.load“ verwenden?

+0

Entschuldigung für den Fehler, ich benutze window.location. Ich habe jetzt eine ähnliche Implementierung, können Sie mir sagen, wie ich jetzt auf die Mail-Betreff von page1.aspx und page2.aspx zugreifen kann? –

0

Fei Xue Antwort ist korrekt. wenn Sie von file2.aspx Thema erhalten möchten, fügen Sie office.js Bezug und Zugang Gegenstand gleiche wie file1.aspx innerhalb des Office.initialize Ereignis

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