Uncaught TypeError: window.external.GetContext не является функцией

Я создал угловое приложение и хотел использовать в нем библиотеку JS API. Я хочу использовать это приложение в Office 365 Outlook. Однако я получаю следующую ошибку:

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

Я запускаю index.html в браузере и, в конечном итоге, буду запускать его из внешнего вида Office 365. Ниже приведен код:

индекс.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>

приложение.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);
      }
    });

Пожалуйста, сообщите мне, если кто-то столкнулся с этой ошибкой. Я не мог найти решения для этого, ища в Интернете.

Спасибо!


person Spartan    schedule 21.08.2015    source источник
comment
Даже я сталкиваюсь с той же проблемой, но я предлагаю не использовать этот подход, я имею в виду, что нехорошо проверять window.external.GetContext. У меня нет никакого решения прямо сейчас, но на этот вопрос будет дан ответ с некоторым действительным предложением.   -  person Hitendra    schedule 14.10.2015
comment
Получите ту же проблему здесь при запуске приложения, созданного Yeoman, в браузере. Что странно: когда вы открываете размещенный файл o15apptofilemappingtable.js, он говорит: Специальная библиотека API для Excel. Эмм? В аутлуке? Странный.   -  person Jasper    schedule 13.11.2015
comment
Как вы решили проблему?   -  person herrh    schedule 28.01.2016


Ответы (4)


Я думаю, проблема в том, что вы открываете его в окне браузера, а не в приложении Office. Я столкнулся с той же проблемой с надстройкой Excel. API не должен работать должным образом вне приложений Office. Если вам нужно, чтобы ваше приложение работало вне Excel - вы можете проверить, открывается ли веб-страница внутри офисного приложения, и только в этом случае загружать офисный API.

person Mary    schedule 18.11.2015

Я столкнулся с той же проблемой при запуске кода из браузера. Проблема была устранена путем запуска кода в почтовом клиенте MS Outlook с правильным XML-файлом манифеста.

person M Thomas    schedule 17.09.2016

ваше приложение должно находиться внутри офиса 365. В противном случае оно не распознает событие Office.initialize. вот как начинается инициация

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

        });
};

похоже, что ваше приложение angular. поэтому приложение должно вручную загружаться, когда Office.initialize fire

person InfoÁsith    schedule 21.04.2016

Я столкнулся с той же проблемой. провести час или два. Мне удалось решить эту проблему, удалив локальные файлы из каталога и взяв последнюю версию из системы управления версиями. Который действительно восстановил файл office.d.ts, и это помогло мне

person Nirav    schedule 21.10.2015