/**
* Forces a reload of all stylesheets by appending a unique query string
* to each stylesheet URL.
*/
function reloadStylesheets() {
var queryString = '?reload=' + new Date().getTime();
$('link[rel="stylesheet"]').each(function () {
this.href = this.href.replace(/\?.*|$/, queryString);
});
}
function reloadCss()
{
var links = document.getElementsByTagName("link");
for (var cl in links)
{
var link = links[cl];
if (link.rel === "stylesheet")
link.href += "";
}
}
0
基于以前的解决方案,我使用JavaScript代码创建了书签:
javascript: { var toAppend = "trvhpqi=" + (new Date()).getTime(); var links = document.getElementsByTagName("link"); for (var i = 0; i < links.length;i++) { var link = links[i]; if (link.rel === "stylesheet") { if (link.href.indexOf("?") === -1) { link.href += "?" + toAppend; } else { if (link.href.indexOf("trvhpqi") === -1) { link.href += "&" + toAppend; } else { link.href = link.href.replace(/trvhpqi=\d{13}/, toAppend)} }; } } }; void(0);
function swapStyleSheet() {
var old = $('#pagestyle').attr('href');
var newCss = $('#changeCss').attr('href');
var sheet = newCss +Math.random(0,10);
$('#pagestyle').attr('href',sheet);
$('#profile').attr('href',old);
}
$("#changeCss").on("click", function(event) {
swapStyleSheet();
} );
11 回答
在"edit"页面上,不是以正常方式包含CSS(使用
<link>
标记),而是将其全部写入<style>
标记 . 编辑它的innerHTML
属性将自动更新页面,即使没有到服务器的往返 .Javascript,使用jQuery:
这应该是它!
如果你想要真正的花哨,将功能附加到textarea上的keydown,虽然你可能会得到一些不必要的副作用(页面会在你键入时不断变化)
Edit :测试和工作(至少在Firefox 3.5中,但对其他浏览器应该没问题) . 在这里看演示:http://jsbin.com/owapi
可能不适用于您的情况,但这是我用于重新加载外部样式表的jQuery函数:
看看Andrew Davey时髦的Vogue项目 - http://aboutcode.net/vogue/
还有一个jQuery解决方案
对于ID为“css”的单个样式表,请尝试以下操作:
将其包含在具有全局scrope的函数中,您可以在Chrome中的Developer Console或Firefox中的Firebug中使用它:
绝对没有必要为此使用jQuery . 以下JavaScript函数将重新加载所有CSS文件:
基于以前的解决方案,我使用JavaScript代码创建了书签:
来自Firefox的图片:
它有什么作用?
它通过添加查询字符串参数重新加载CSS(如上面的解决方案):
Content / Site.css成为Content / Site.css?trvhpqi = 1409572193189(添加日期)
Content / Site.css?trvhpqi = 1409572193189成为Content / Site.css?trvhpqi = 1409572193200(日期变更)
http://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,800italic,800,700italic,700,600italic,600&subset=latin,latin-ext变为http://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,800italic,800,700italic,700,600italic,600&subset=latin,latin-ext&trvhpqi=1409572193189(添加带日期的新查询字符串参数)
Vanilla JS中的一个较短版本,在一行中:
或者扩大:
以简单的方式,您可以使用 rel="reload" 而不是 rel="stylesheet" .
是的,重新加载css标签 . 并记住使新网址唯一(通常通过附加随机查询参数) . 我有代码可以做到这一点,但现在不能和我在一起 . 稍后会编辑......
编辑:太晚了...哈托和尼克夫打败了我;-)
我现在有这个:
使用带有新css url的href属性在页面中使用id changeCss创建任何元素 . 和一个起始css的链接元素:
另一个答案:有一个名为ReCSS的书签 . 我没有广泛使用它,但似乎工作 .
该页面上有一个书签,可以拖放到你的地址栏上(似乎无法在这里制作一个) . 万一破了,这是代码: