2015-08-21 38 views
14

Ho creato un'app angolare e volevo utilizzare la libreria JS API. Voglio usare questa app all'interno di Office 365 Outlook. Tuttavia, sto ottenendo il seguente errore:Unchaught TypeError: window.external.GetContext non è una funzione

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

Sono in esecuzione il file index.html su un browser e, infine, correrò da dentro l'ufficio 365 prospettive. Di seguito è riportato il codice:

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); 
     } 
    }); 

Per favore fatemi sapere se qualcuno ha riscontrato questo errore. Non sono riuscito a trovare alcuna soluzione cercando sul web.

Grazie!

+1

Anche io incontro lo stesso problema, ma il mio suggerimento non è quello di usare questo approccio. Voglio dire che non è bello controllare 'window.external.GetContext'. Non ho alcuna soluzione, adesso, ma saltando questa domanda otterrei una risposta con qualche suggerimento valido. – Hitendra

+0

Ottieni lo stesso problema qui quando esegui un'applicazione Yeoman generata nel browser. Che strano: quando apri il file o15apptofilemappingtable.js ospitato, viene visualizzato il messaggio: "Libreria API specifica di Excel". Euhm? In Outlook? Strano. – Jasper

+2

Come hai risolto il problema? – herrh

risposta

-1

Ho riscontrato lo stesso problema. passare un'ora o due. Sono riuscito a risolvere eliminando i file locali dalla directory e ho preso l'ultima versione dal controllo del codice sorgente. Quale ha fatto ripristinare il file office.d.ts e questo ha fatto il trucco per me

7

Penso che il problema è che lo si sta aprendo nella finestra del browser, non all'interno di Office. Ho riscontrato lo stesso problema con il componente aggiuntivo di Excel. L'API non dovrebbe funzionare correttamente al di fuori delle applicazioni di Office. Se hai bisogno che la tua applicazione funzioni al di fuori di Excel, puoi verificare se la pagina web è aperta all'interno dell'applicazione Office e solo in quel caso caricare l'API office.

1

l'app deve trovarsi all'interno dell'ufficio 365, altrimenti non riconosce l'evento Office.initialize. ecco come inizia l'avvio

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

     }); 
}; 

sembra che la tua sia l'app angolare. quindi l'applicazione ha bisogno di bootstrap manuale quando Office.initialize fire

2

Ho affrontato lo stesso problema quando si esegue il codice dal browser. Il problema è stato risolto eseguendo il codice nel client di posta MS Outlook con il file XML manifest corretto.

Problemi correlati