在javascript事件上预加载一个文件,然后再显示它
Preload a file on javascript event, before display it
我有几个用PHP生成的CSS文件。
我用一个点击事件来更改当前的CSS文件。
但它在每次更改之间都会产生令人讨厌的白色闪光效果(仅在第一次加载时,下次在缓存中时,效果不错)。
如何通过单击事件预加载(但不显示)此CSS文件?
$('.button').click(function(){
// Here I would like to preload the file
...
// Here I display it
$("#css").attr("href","css.php?id="+$(this).attr('id'));
});
EDIT>解决方案
/* HTML File */
<link type="text/css" rel="stylesheet" href="css.php?id=1" id="css"/>
<link type="text/css" href="css.php?id=2" id="nextcss"/>
/* JS file */
$('.button').click(function(){
// Preload the file
$("#nextcss").attr("href","css.php?id="+$(this).attr('id'));
/* Here a lot of code with ajax...*/
// Here I display it
$("#css").attr("href","css.php?id="+$(this).attr('id'));
});
我假设这种"闪光效果"意味着,在加载CSS时,新规则将被增量应用,但您希望所有规则都能同时应用。是这样吗?也许您可以将新创建的css元素附加到dom(确保它将开始加载),但调整其属性,使其不会被解释为样式表(例如,不使用rel="stylesheet"
)。加载完成后,您可以使用正确的值再次调整它,这将使整个更改立即出现。
另一个选项(尽管这需要更改css)是创建一个类,应用于body
,并确保每个规则都引用body.myclass
中的元素。加载完css后,将该类应用于正文。
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 我应该如何从xml文件构建一个javascript页面
- Sails.js:同时发布文本输入和一个文件
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 要求定义另一个文件中的对象
- 是否可以使用JavaScript/AAJAX在客户端创建一个文件
- SuiteScript2.0-包括一个自定义文件
- 有没有办法在tinymceiframe中加载一个外部javascript文件
- 如何将变量传递到另一个js文件
- 如何将所有JS文件连接到一个文件夹中
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 如何用javascript发送多个文件没有jQuery我想要每个文件一个进度条
- 我正在尝试一个接一个地播放一个 mp3 文件(一个作为介绍),但它不起作用.我该怎么做
- Jquery结构-每个文件一个函数
- 如何将文件一个接一个地上传到谷歌驱动器使用谷歌应用程序脚本
- 将多个链接从txt文件一个接一个地插入到一个iframe中