从本地存储加载样式表时如何防止渲染css?

时间:2016-10-28 10:59:20

标签: javascript jquery css json local-storage

以下问题 - 我将样式表存储在本地存储中。但是当我尝试从那里加载它时,我使用JSON.parse(),似乎浏览器已经渲染了CSS。但我更喜欢浏览器将解析后的CSS视为文本,然后将文本附加到样式标记。

守则:

从服务器加载样式表并将其存储在本地存储中

function load_css(url){
        $.ajax({
            url: url,
            cache: false,
            dataType: 'text',       
            success: function(res){ 
                $('<style>').attr('id', 'my_style').text(res).prependTo('#my_div');         
                if (typeof(Storage) !== "undefined" && typeof localStorage !== "undefined" && localStorage !== null && typeof localStorage.setItem === 'function') {
                    localStorage.setItem("my_style", JSON.stringify(res));                                  
                }                           
            },
            error: function(err){
                console.log(err);
            }
        }); 
    }

在另一个函数中,如果设置了样式,则应从本地存储加载样式:

try{
    if (typeof(Storage) !== "undefined" && typeof localStorage !== "undefined" && localStorage !== null && localStorage.getItem("my_style") !== null) {
        var css = JSON.parse(localStorage.getItem('my_style'));
        $('<style>').attr('id', 'my_style').text(css).prependTo('#my_div');
        ... //load style from server if local storage not available, item not found

即使我遗漏了创建的样式标记的行,也会呈现css。通过这一行,我看到如果我检查一个元素,元素样式在开发人员工具栏中出现两次。那么在使用JSON.parse()时如何阻止浏览器呈现样式呢?也许有另一种方法将本地存储中的样式视为纯文本?

2 个答案:

答案 0 :(得分:3)

你在说这个

jdbc:mysql://"+url+":"+port+"/"+database?autoReconnect=true&useSSL=false, username, password
存储之前

。所以,一旦你通过ajax获取文档,然后在其他代码上再次使用它。

答案 1 :(得分:0)

很抱歉写在这里,因为我没有足够的代表发表评论我在这里写下来。

我只是想知道你为什么要从本地存储加载样式表。我们已经有了一个浏​​览器缓存。那么使用本地存储实现它的好处/目的是什么?

我只是好奇。