WinJS css файл от локално хранилище

Проследяване на този въпрос: прилагане на изтегления CSS в приложението metroUI за Windows 8

Така че, да, Windows казва от съображения за сигурност, че не можете да навигирате до HTML, който сте изтеглили на това място, и не можете да стартирате изпълним или потенциално изпълним код, като например скрипт или CSS. Предназначен е за медии като изображения или видеоклипове и други подобни.

Но аз наистина, наистина искам да използвам този css файл от моето локално хранилище. Не трябва ли да мога да използвам метода execUnsafeLocalFunction да заобиколите това ограничение по този начин?:

MSApp.execUnsafeLocalFunction(function () {
    el["href"] = "ms-appdata:///local/style.css"
});

Все още изхвърля Приложението не може да зареди отдалечено уеб съдържание в локалния контекст. Опитах също така просто да прочета файла с localFolder.getFileAsync и readText, но изглежда нищо не помага. Наистина ли няма начин да се заобиколи това?


person blub    schedule 25.06.2014    source източник


Отговори (1)


Мисля, че намерих начин да накарам CSS да се зареди.

Тествах кода по-долу, като добавих css файл, който настройва основния фон на червено в локалната папка за съхранение.

Кодът чете съдържанието на файла, създава таг за стил в главата и добавя съдържанието на css файла към стила.

var url = new Windows.Foundation.Uri(filename);

Windows.Storage.StorageFile.getFileFromApplicationUriAsync(url).then(function (file) {
    Windows.Storage.FileIO.readTextAsync(file).then(function(text) {

        var style = document.createElement("style");
        style.innerText = text;
        document.getElementsByTagName("head")[0].appendChild(style);

    });
});
person Sorskoot    schedule 25.06.2014
comment
Да, това е точно начинът за динамично зареждане на CSS: добавете го към документа в DOM. Можете да направите подобно нещо с файлове в пакет, като създадете елементи ‹link› в заглавката на документа. Същата стратегия работи и за разтоварване на CSS – премахнете елемента ‹link› или ‹style› в DOM и CSS се разтоварва. - person Kraig Brockschmidt - MSFT; 25.06.2014
comment
Благодаря, getFileFromApplicationUriAsync свърши работа! По някаква причина добавянето към документа не проработи, но замяната на cssText на елемент на връзка проработи. - person blub; 26.06.2014
comment
Това не работи за мен. Всички заредени стилове са невалидни в DOM Explorer. body { background-color: white;} се показва като неправилно форматиран background-color:white: Изглежда, че innerText не обработва правилно \r\n в моя CSS файл. - person philk; 28.01.2015