Как получить значение строки запроса из экземпляра веб-слова - PullRequest
0 голосов
/ 05 ноября 2019

Я создаю веб-надстройку для Word, ориентированную на Word Online. Когда документ открывается с помощью Word Online, URL-адрес будет содержать имя файла. Я пытаюсь получить это имя файла.

Чтобы получить этот URL, я попытался использовать window.location href, но он загружает URL моего размещенного веб-приложения надстройки. Можно ли получить URL-адрес Word Online?

Пример кода:

function getParameterByName(name, url) {
    if (!url) url = window.location.search;
        name = name.replace(/[\[\]]/g, '\\$&');
        var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
            results = regex.exec(url);
        if (!results) return null;
        if (!results[2]) return '';
        return decodeURIComponent(results[2].replace(/\+/g, ' '));
    }

1 Ответ

1 голос
/ 05 ноября 2019

Что вы должны использовать вместо этого?

Вы должны использовать Office.js API, который определен здесь

https://docs.microsoft.com/en-us/javascript/api/office/office.document

Office.context.document.url это должно вернуть вам то, что выможно использовать.

Почему ваше решение не сработало?

К сожалению, это невозможно из-за того, что вы пытаетесь реализовать его из-за требований безопасности в iFrames. Word Online использует iFrame для размещения надстройки, и доступ к родительскому окну из iFrame, как правило, очень ограничен, если вам явно не разрешено.

Однако вы можете получить базовый URL-адрес родительского окна с помощьюзаглядывая в заголовок referrer, но это почти всё. Я понимаю, что для вас этого недостаточно, поэтому я рекомендую использовать Word API.

Ниже вы можете увидеть немного больше документации по iFrames:

...