如何防止从本地存储加载样式表时呈现css
How to prevent rendering css when loading stylesheet from 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()
。也许还有另一种方法可以将本地存储中的样式视为纯文本?
你正在调用这个
$('<style>').attr('id', 'my_style').text(res).prependTo('#my_div');
,然后再存储。所以当你通过ajax获取它时,它就在文档上了,然后在其他代码上你再放一次。
很抱歉写在这里,因为我没有足够的代表来评论,我写在这里。
我只是想知道为什么你想从本地存储加载你的样式表。我们已经有了一个浏览器缓存。那么使用本地存储的好处/目的是什么?
我只是好奇。
相关文章:
- 如果文本字段为空,则使用JavaScript应用CSS样式
- FF和Chromium中CSS样式按钮的外观差异
- CSS样式属性留空
- CKeditor预览插件.js,为Chrome和IE进行编辑.因为它拒绝CSS样式
- 基于路由的CSS样式-Angular2
- 为未标记的文本添加CSS样式
- 使用JQuery将现有CSS样式扩展%-%
- JavaScript-在keyDown上切换css样式
- React js应用程序's在托管应用程序中打开时将覆盖css样式
- 如何在javascript中更改段落中不同行的css样式
- 通过javascript设置IE特定的css样式
- PHP,MySQL,AJAX-调用AJAX结果后,Bootstrap CSS样式不会显示
- 使用javascript/jquery检查.css样式表的名称
- JavaScript和CSS样式不适用于我的“;谷歌网站”;页
- 未使用jQuery验证器选中Css样式复选框时
- javascript正则表达式,用于编辑元素内部的css样式属性
- css样式加载+id.例如加载1、加载300
- 无法在运行时将CSS样式添加到元素中
- d3js 通过其 CSS 样式选择所有元素
- 如何根据浏览器宽度动态调整 css 样式表