msSaveOrOpenBlob работает в Edge, но не работает в Edge WebView - PullRequest
0 голосов
/ 23 октября 2019

Теперь надстройки Office используют новый WebView на основе Edge вместо IE 11. Мой кусок кода перестает работать после этого обновления. Я просто пытаюсь скачать файл здесь. Этот код работает правильно, если я использую его в любых браузерах. Но приложения Office, такие как Excel или Word, используют версию Microsoft Edge для WebView. Отладка покажет мне, что функция window.navigator.msSaveOrOpenBlob в этом случае не определена. Пожалуйста, помогите мне исправить это.

Я пытаюсь найти любую документацию по этому вопросу, но безуспешно.

        function ClickFunc() {
        var blob = new Blob(['Some Byte Array'], { type: 'application/txt' });
        //output file name
        var fileName = "test.txt";

        //detect whether the browser is IE/Edge or another browser
        //
        //ERROR: In Edge WebView window.navigator.msSaveOrOpenBlob is undefined.  
        //
        if (window.navigator && window.navigator.msSaveOrOpenBlob) 
        {
        //To IE or Edge browser, using msSaveorOpenBlob method to download file.
            window.navigator.msSaveOrOpenBlob(blob, fileName);
        } else {
            //To another browser, create a tag to downlad file.
            //This part of code for browsers other than IE & Edge.
            const url = window.URL.createObjectURL(blob);
            const a = document.createElement('a');
            document.body.appendChild(a);
            a.setAttribute('style', 'display: none');
            a.href = url;
            a.download = fileName;
            a.click();

            window.URL.revokeObjectURL(url);
            a.remove();
        }
    }

   //I use this code in HTML to call function
   <button onclick="ClickFunc()">Click me</button>

window.navigator.msSaveOrOpenBlob не определен, когда он используется в WebView Microsoft Edge.

1 Ответ

0 голосов
/ 23 октября 2019

Вы используете Microsoft Edge WebView2? Как упоминалось в статье , Edge WebView2 использует Microsoft Edge (Chromium) в качестве движка рендеринга. msSaveOrOpenBlob является эксклюзивным в MS Edge и IE, оно не будет определено в Edge на основе Chromium.

...