Сводка :
window.Open('')
или window.Open('about:blank')
работает с JavaScript в обычном HTML-файле, что можно проверить здесь .Но, похоже, он не работает в надстройке Office.js.
Подробности :
На моем Windows 10 desktop
с VS2017
я создал этот проект надстройки Office.js WORD, который отлично работает с моей Microsoft Office Home and Student 2016
редакцией.В этом же проекте я создал новую кнопку btnTest
в файле home.js
.Когда я нажимаю btnTest
, он успешно вызывает следующий метод MyTest
и открывает новое окно с window.Open('some URL')
.
Но в том же методе MyTest
, когда я вызываю window.Open('about:blank')
, он не открывает пустая страница ;вместо этого он открывает окно сообщения Windows 10, показанное на снимке экрана ниже.
Цель здесь в том, чтобы мой код создал строку HTML на основе некоторого содержимого из WORD document
, а затем использовал метод window.document.write(...)
для динамического открытия этого HTML-кода вбраузер как объяснено (и вы можете проверить) здесь . Вопрос : Как я могу заставить работать метод window.Open('about:blank')
?
function MyTest() {
Word.run(function (context) {
// window.open('https://www.google.com/'); this works
var myWindow = window.open('about:blank'); //this does not work and, instead, displays the default Windows 10 message shown in screenshot below
myWindow.document.write('<!DOCTYPE html><html><head></head><body><p>This is just a paragraph</p></body></html>');
// Synchronize the document state by executing the queued commands,
// and return a promise to indicate task completion.
return context.sync().then(function () {
//following (after un-commenting) does not work either
//var myWindow = window.open('about:blank');
//myWindow.document.write('<!DOCTYPE html><html><head></head><body><p>This is just a paragraph</p></body></html>');
});
})
.catch(function (error) {
console.log('Error: ' + JSON.stringify(error));
if (error instanceof OfficeExtension.Error) {
console.log('Debug info: ' + JSON.stringify(error.debugInfo));
}
});
}
Окно следующего сообщения Windows выскакивает, а кнопка ОК становится серой при вызове window.open('about:blank');
:
ПРИМЕЧАНИЕ : На том же рабочем столе я создал новый этот UWP AP with Javascript
проекти в следующем методе их проекта я откомментировал их код и добавил window.open('about:blank');
.Когда я вызываю следующий метод там, он успешно открывает пустую страницу по умолчанию.
function sayHello() {
//var messageDialog = new Windows.UI.Popups.MessageDialog("Hello, world!", "Alert");
//messageDialog.showAsync();
window.open('about:blank');
}
ОБНОВЛЕНИЕ :
Как я могу заставить его работать из диалога?Я попробовал следующее, но это не сработало: я создал эту диалоговую надстройку .Работает как есть.Затем я закомментировал код функции submit()
в файле Form.js
надстройки в новом проекте и добавил вместо него строку window.open('https://www.google.com/');
.Когда я нажимаю кнопку «Отправить» в диалоговом окне, он успешно открывает веб-сайт Google в браузере по умолчанию.Но если я заменим вышеуказанную строку на
var myWindow = window.open('about:blank');
myWindow.document.write('html here'');`
, то появится то же окно с предупреждением, показанное на рисунке выше