2015-08-21 6 views
14

Ich habe eine eckige App erstellt und wollte JS API Bibliothek darin verwenden. Ich möchte diese App in Office 365 Outlook verwenden. Allerdings erhalte ich folgende Fehlermeldung:Uncaught TypeError: window.external.GetContext ist keine Funktion

Uncaught TypeError: window.external.GetContext is not a function 
OSF.InitializationHelper.getAppContext @ o15apptofilemappingtable.js:11 

ich in einem Browser das index.html leite und schließlich werde ich es von innen Büro 365 Ausblick laufen. Unten ist der Code:

index.html:

<!DOCTYPE html> 
<html ng-app="app"> 

    <head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <title>Office 365 APIs sample</title> 
    <base href="/"> 

    ... 
    ... 

    <!-- JavaScript Office API --> 
    <script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script> 

    <!-- App code. --> 
    <script src="scripts/app.js"></script> 
    <script src="controllers/homeController.js"></script> 

    </head> 
<body> 
</body> 
</html> 

app.js:

(function() {  
     console.log("STARTING..."); 
     var init = function (reason) { 
      $(document).ready(function() { 
       console.log("ready"); 
      }); 
     }; 

     try { 
      Office.initialize = init; 
      if(!window.external.GetContext) { 
       console.log('Not in office context'); 
       init(); 
      } 
     } catch(e) { 
      // when in office context unable to access external 
      console.log(e); 
     } 
    }); 

Bitte lassen Sie mich wissen, ob jemand diesen Fehler aufgetreten. Ich konnte keine Lösung finden, indem ich im Internet suchte.

Danke!

+1

Auch ich finde das gleiche Problem, aber mein Vorschlag ist nicht, diesen Ansatz zu verwenden, ich meine, es ist nicht gut, 'window.external.GetContext' zu überprüfen. Ich habe jetzt keine Lösung, aber diese Frage würde mit einem gültigen Vorschlag beantwortet werden. – Hitendra

+0

Erhalten Sie das gleiche Problem, wenn Sie eine Yeoman generierte App im Browser ausführen. Was ist seltsam: Wenn Sie die gehostete o15apptofilemappingtable.js-Datei öffnen, heißt es: "Excel specific API library". Euhm? In Outlook? Seltsam. – Jasper

+2

Wie hast du das Problem gelöst? – herrh

Antwort

-1

Ich stieß auf das gleiche Problem. verbringen Sie eine Stunde oder zwei. Ich habe es gelöst, indem ich lokale Dateien aus dem Verzeichnis gelöscht habe und die neueste Version von der Quellcodeverwaltung genommen habe. Was hat die Datei office.d.ts wiederherstellen und das hat den Trick für mich

7

Ich denke, das Problem ist, dass Sie es im Browserfenster öffnen, nicht in Office-App. Ich habe das gleiche Problem mit dem Excel-Add-In festgestellt. Die API sollte außerhalb von Office-Anwendungen nicht ordnungsgemäß funktionieren. Wenn Ihre Anwendung außerhalb von Excel arbeiten soll, können Sie prüfen, ob die Webseite in der Office-Anwendung geöffnet ist, und nur in diesem Fall Office API laden.

1

Ihre App sollte im Büro 365 sein. Andernfalls erkennt sie das Office.initialize-Ereignis nicht. Hier ist, wie Start

Office.initialize = function (reason) { 
     $(document).ready(function() {   
       app.initialize(); 
       // app begin here 

     }); 
}; 

es sieht aus wie Ihr ist eckige App. daher app müssen manuelle Bootstrap wenn Office.initialize Feuer

2

Ich habe das gleiche Problem konfrontiert, wenn Sie den Code vom Browser ausgeführt. Das Problem wurde behoben, indem der Code im MS Outlook-Mail-Client mit der korrekten XML-Manifestdatei ausgeführt wurde.

Verwandte Themen