2011-11-23 78 views
3

我想从头部使用javascript/jQuery获取某个样式表。 我不想使用$('head').get(0).innerHTML或类似的原因头部充满了30多个脚本和链接元素。从头部获取样式表内容

这个我试过到目前为止

// 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(); 

我能做些什么来得到头样式表的内容?

+0

的内容请张贴HTML片段。 – zzzzBov

回答

2

尝试通过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/

+0

这不起作用 – Thariama

+0

它现在有效。我更新了正在搜索链接标签的代码。您可能需要使用网址格式化功能,因为它不适用于相关网址。查看jsFiddle的代码 – Samich

+0

+1就是这样 - 非常感谢 – Thariama

12

访问JavaScript中的样式表,实际的办法就是参考document.styleSheets。如果您使用的是Chrome或带Firebug的Firefox,则可以在Javascript控制台中输入该内容并查看其中的可用内容。

这里有一些很好的参考资料来看看。

+0

我正在使用IE8实际上 – Thariama

+1

就我所知,“document.styleSheets”在所有浏览器中均可用。至少IE8和以上。我只是说这两个浏览器有一个探索对象的简单方法。 – btleffler

+1

@btleffler - 阅读了几个SO答案后,您的第一个作品。它是最简单的!应该有超过7个upvotes。 –

2

如果您使用<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()); 
}); 
0

试试这个例子...这将获取第一个样式表

$.ajax({ 
    'url': $(document).find('link')[0].href, 
    'dataType':'text', 
    'success':function(data){ 
     alert(data); 
     } 
});