Разработка надстройки Office, нужен запасной вариант для AppsForOffice CDN - PullRequest
0 голосов
/ 08 января 2019

Я завершаю загрузку JS и CSS для надстройки Office, и мне нужно написать запасной вариант для Office CDN. У меня есть один для jQuery, который работает, но я не знаю, что проверить, если файлы AppsForOffice не загружаются. Какой объект мне нужно проверить? Я искал вокруг и не нашел ни одного примера кода для этого CDN.

Пример jQuery (работает)

<!-- jQuery CDN and fallback -->
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
        integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
        crossorigin="anonymous">
</script>
<script>window.jQuery || document.write('<script src="../../Scripts/jquery-3.3.1.min.js">\x3C/script>')</script>

Пример AppsForOffice (не работает)

<!-- Office CDN and fallback -->
<link rel="preconnect" href="https://appsforoffice.microsoft.com">
<script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js"></script>
<link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/2.6.1/fabric.min.css">
<link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/2.6.1/fabric.components.min.css">
<script>
    window.Office ||
        document.write('<script src="../../Scripts/Office/1/office.js">\x3C/script>')
    document.write('<link rel = "stylesheet" href = "../../Content/fabric.min.css" />')
 document.write('<link rel="stylesheet" href="../../Content/fabric.components.min.css" />')
</script>

Как уже упоминалось, какой объект мне нужно проверить?

Ответы [ 2 ]

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

Объект window.OSF (или просто OSF). Это можно определить, изучив office.js.

Вам также необходимо изменить код с:

window.Office ||
document.write('<script src="../../Scripts/Office/1/office.js">\x3C/script>')
document.write('<link rel = "stylesheet" href = "../../Content/fabric.min.css" />')
document.write('<link rel="stylesheet" href="../../Content/fabric.components.min.css" />')

что-то вроде:

if(!window.OSF) {
    document.write('<script src="../../Scripts/Office/1/office.js">\x3C/script>');
    document.write('<link rel="stylesheet" href="../../Content/fabric.min.css" />');
    document.write('<link rel="stylesheet" href="../../Content/fabric.components.min.css" />');
}

для того, чтобы запасной вариант функционировал должным образом.

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

Я просмотрел библиотеку .js, которую я вызывал, и увидел, что вместо Office файл возвращает объект OSF, поэтому изменил резервный код следующим образом. Проверено в функции аудита Chrome.

Это использует ответ Ouroborus с модификацией для загрузки всех фрагментов, необходимых Office, а также кода для определения разницы между сетью и рабочим столом. В зависимости от ваших потребностей вам, вероятно, потребуется загрузить другой языковой пакет или другую версию web / win32.

<!--
    Office CDN and fallback
    CSS and JS are copies of referenced CDN's
    If the CDN's change, the fallbacks must change'
-->
<link rel="preconnect" href="https://appsforoffice.microsoft.com">
<script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js"></script>
<script>
    if (!window.OSF) {
        document.write('<script src="../../Scripts/Office/1/office.js">\x3C/script>');

        if (location.search === "?et=") {
            document.write('<script src="../../Scripts/Office/1/outlook-web-16.01.js">\x3C/script>');
        } else {
            document.write('<script src="../../Scripts/Office/1/outlook-win32-16.01.js">\x3C/script>');
        }

        document.write('<script src="../../Scripts/Office/1/en-us/office_strings.js">\x3C/script>');
        document.write('<script src="../../Scripts/Office/1/en-us/outlook_strings.js">\x3C/script>');
        document.write('<link rel="stylesheet" href="../../Content/fabric.min.2.6.1.css" type="text/css" />');
        document.write('<link rel="stylesheet" href="../../Content/fabric.components.2.6.1.min.css" type="text/css"  />');
        document.write('<script src="../../Scripts/Office/MicrosoftAjax.js">\x3C/script>');
    } else {
        document.write('<link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/2.6.1/fabric.min.css" />');
        document.write('<link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/2.6.1/fabric.components.min.css" />');
    }
</script>

Уходите сюда, чтобы помочь кому-то, у кого может возникнуть подобный вопрос.

...