Не удалось выполнить 'postMessage' в 'DOMWindow': указан целевой источник ('https://outlook.office.com') не соответствует источнику окна получателя) - PullRequest
0 голосов
/ 27 декабря 2018

Ниже приведен запуск файла из рабочей надстройки MS Outlook.

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

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

  <link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/1.0/fabric.min.css" />
  <link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/1.0/fabric.components.min.css" />

  <script src="../../Assets/Scripts/jquery.fabric.js" type="text/javascript"></script>

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

  <script src="Demo.js" type="text/javascript"></script>
</head> 

Однако в демонстрационной версии используется JQuery, и я хочу заменить его на существующие AngularJ, модифицированныебыть веб-надстройкой.

Мой файл запускается

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />  
    <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script> 
    <script src="MyDialogView.js" type="text/javascript"></script> 
  <title>MyApp</title>
</head>

и выдает следующую ошибку consiole:

Не удалось выполнить 'postMessage' on 'DOMWindow ': указан целевой источник (' https://outlook.office.com') не соответствует источнику окна получателя ('https://localhost').

, что похоже на проблему с CORS. Но почему я не получил ееиз файла выше, который находится в том же каталоге на localhost?

Я не могу опубликовать все приложение, но я надеюсь, что это вызывает отклик в чьей-то памяти ... Что я делаю неправильно?


[Обновление], в отличие от некоторых похожих вопросов, в нем нет встроенных фреймов. Также добавление <AppDomain>https://outlook.office.com</AppDomain> не помогло (но почему, если у страницы, с которой я скопировал, проблем не было?)

1 Ответ

0 голосов
/ 03 января 2019

Вы должны вручную загрузить приложение AngularJs, потому что Office.js и AngularJS , похоже, имеют проблемы, чтобы жить вместе.Попробуйте вручную инициализировать AngularJ с помощью angular.bootstrap() в функции Office.initialize().Когда вы запускаете AngularJs вручную, обратите внимание, чтобы не использовать ng-app="myApp" в index.html.

Т.е.

Office.initialize = function () {
   $(document).ready(function () { // If you want jQuery too
      angular.bootstrap(document, ['myApp'])
   });
}
var app = angular.module('myApp', [// Other config...]);
// Your app config and code

РЕДАКТИРОВАТЬ:

, если выне хотите, чтобы jQuery

Office.initialize = function () {
   angular.element(document).ready(function () {
      angular.bootstrap(document, ['myApp'])
   });
}

или даже больше, если ваш app.js находится в нижней части html рядом с </body>, вы можете просто использовать angular.bootstrap(document, ['myApp']), потому чтоDOM уже загружен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...