从head获取样式表内容
get stylesheet content from head
我试图使用javascript/jQuery从头部获得一定的样式表。我不想使用$('head').get(0).innerHTML
或类似的,因为头部填充了超过30个脚本和链接元素。
I try this so far
// that's the one
var $my_stylesheet = $(document.body.previousSibling).find('link:last');
//those did not work (result: "")
$my_stylesheet.get(0).innerHTML;
$my_stylesheet.text();
$my_stylesheet.html();
我怎么做才能从头部获得样式表内容?
在Javascript中访问样式表的实际方法是引用document.styleSheets
。如果你有Chrome,或者Firebug的Firefox,你可以在Javascript控制台输入这句话,看看里面有什么可用的。
这里有一些很好的参考资料。
- 文档。样式表- MDN
- JavaScript Kit- DOM样式表对象
尝试通过ajax调用请求:
var $my_stylesheet_url = $('head').find('link:first').attr('href');
var content;
$.get($my_stylesheet_url, function(data) {
content = data;
// do your staff here
});
代码:http://jsfiddle.net/kh2en/1/
不依赖get请求也可以获取样式表的内容。链接元素上的样式表指向一个JavaScript对象。好消息是,您可以使用document访问该Object。或document.getElementById('link-tag-id').sheet.
如果你要使用文档。样式表中,您将看到一个包含所有链接标记的映射。所以,最快的方法是添加一个id(或另一个唯一的标志)。
现在您可以使用下面的代码选择链接标记,并检索工作表对象const sheet = document.getElementById('link-tag-id').sheet;
对于链接标签表,您可以使用以下代码片段提取css:
const css = Array.from(sheet.cssRules).map(rule => rule.cssText).join(' ');
它将传递样式表的每个css规则,返回它的css文本部分并将其连接到"css"const中。
如果你想做一个测试,你可以将下面的代码粘贴到任何网页的控制台,它将在头部输出第一个样式表的内容:
const sheet = document.styleSheets[0];
const css = Array.from(sheet.cssRules).map(rule => rule.cssText).join(' ');
console.log(css);
如果使用<link />
元素链接样式表,则需要发出AJAX请求来读取其内容。另外,这只适用于同一域中的样式表。
$('link[rel="stylesheet"]').each(function (i, ele) {
$.get($(this).attr('href'), function (data) {
console.log(data);
});
});
如果你通过<style>
元素添加了样式,你可以通过.text()
访问内容。
$('style').each(function (i, ele) {
console.log($(this).text());
});
试试这个例子…这将获取第一个样式表
的内容$.ajax({
'url': $(document).find('link')[0].href,
'dataType':'text',
'success':function(data){
alert(data);
}
});
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 将样式表插入iframe
- 跟踪在页面加载时应用内联样式的JavaScript
- 如果文本字段为空,则使用JavaScript应用CSS样式
- 定义完全独立的样式信息
- W3C循环样式的JavaScript
- jQuery/JavaScript在线公文包表单-打印样式表
- 使用递归、Ramda.js和无点样式重构字符串的getPermutations()
- FF和Chromium中CSS样式按钮的外观差异
- 如何首先设置样式<td>表中包含在窗体中的元素
- javascript问题正文样式
- 使用具有内联样式的tidy-html5
- DataTables-创建自定义分页样式(加载更多样式)
- 具有所有样式的文本正在复制到可编辑文本区域
- 如何提供在javascript中编写对对象的重复访问以设置元素样式的简写
- 如何将 CSS 样式动态添加到 HEAD 标记
- 设置 HEAD 元素样式以将其用作数据存储
- Head.js只加载IE9及以下版本中的第一个样式表
- 从head获取样式表内容
- 如何动态更新head标记中的CSS样式