displayDialogAsync в Word онлайн, не документирующий близкое действие / нарушенное поведение, отличающееся от Word Online до Word для Mac - PullRequest
0 голосов
/ 29 мая 2018

При закрытии диалогового окна в Word Online появляется следующее сообщение:

Unknown conversation Id.

Вместо того, чтобы получать код, который я могу обработать, я просто получаю это ...

(macOS / Chrome версии 66.0.3359.181 (официальная сборка) (64-разрядная версия))

Тот же код (запущенный из localhost и загруженный манифест), работающий в Word для Mac 16.13.1 (180523) - медленная сборка- приводит к тому, что диалоговые окна не работают должным образом ... Когда они закрыты, они не запускают код, который я могу использовать, и Javascript, похоже, не запускается в них.Когда я пытаюсь проверить диалоговое окно, у меня возникает маниакальное мерцание окна, и консоль не открывается.

В целом кажется, что что-то не так с displayDialogAsync API.

Вот пример диалогового окнафрагмент создания:

$('.integrateQuotes').click(function(){
    console.log('Clicking quote machine choice...');
    var dialogUrl = 'https://localhost/AnnotateX/qWord/modules/integratequotes.html';
    var dialog = null;   //  dialogwindow object
    Office.context.ui.displayDialogAsync(dialogUrl, {height: 80, width: 80, displayInIframe: true}, function (asyncResult){
        dialog = asyncResult.value;
        error = asyncResult.error;
        status = asyncResult.status;
        console.log('Result from dialog window...error: ') +  + console.log(' and status: ') + console.log(status) + console.log(dialog);
        dialog.addEventHandler(Office.EventType.DialogMessageReceived, processMessage);
    });
  });
  self.location.href = '#writingDiv';

И processMessage:

function processMessage(arg) {
    // var messageFromDialog = JSON.parse(arg.message);
    // showUserName(messageFromDialog.name);
    console.log('processing message from dialog: ') + console.log(arg);

    // switch (arg.error) {
    //      case 12002:
    //          console.log("The dialog box has been directed to a page that it cannot find or load, or the URL syntax is invalid.");
    //          break;
    //      case 12003:
    //          console.log("The dialog box has been directed to a URL with the HTTP protocol. HTTPS is required.");            break;
    //      case 12006:
    //          console.log("Dialog closed.");
    //          break;
    //      default:
    //          console.log("Unknown error in dialog box.");
    //          break;
    //   }

    // dialog.close();
    if (arg.message === 'easyBib'){
      //Now open URL
      var win = window.open('http://www.easybib.com/cite/results?source=website&provider=&cite-style=mla7&query=' + localStorage.easyBib);
      console.log("Sending to easyBib: " + localStorage.easyBib);
      if (win) {
          //Browser has allowed it to be opened
          win.focus();
      } else {
          //Browser has blocked it
          alert('Please allow popups for this website');
      }
    } else {
      dialog.close();
      self.location.href = '#writingDiv';
    }
    // self.location.href = 'qResearch.html';
    // window.location.replace("/qResearch.html");
    // window.location.href = "/newPage.html";
}

Я собираюсь попробовать Windows сейчас ... но кое-что

1 Ответ

0 голосов
/ 29 мая 2018

Для обработки события, когда пользователь закрывает диалоговое окно, вам нужен обработчик для события DialogEventReceived, а не DialogMessageReceived.Есть еще: Использование диалога с надстройками Office .

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