Search code examples
javascriptjquerycssstylesheet

Access CSS file contents via JavaScript


Is it possible to get the entire text content of a CSS file in a document? F.ex:

<link rel="stylesheet" id="css" href="/path/to/file.css">
<script>
    var cssFile = document.getElementById('css');
    // get text contents of cssFile
</script>

I’m not really into getting all the CSS rules via document.styleSheets, is there another way?

Update: There is the ajax option of course, I appreciate the answers given. But it seems rather unnecessary to reload a file using ajax that is already loaded in the browser. So if anyone knows another way to extract the text contents of a present CSS file (NOT the CSS rules), please post!


Solution

  • you could load the content with a simple ajax get call, if stylesheet is included from the same domain

    Edit after your update:
    I tried this code (on FX10) as a proof of concept that uses only one request to the CSS but it seems a bit hacky to me and should be tested and verified. it also should be improved with some fallback if javascript is not available.

    CSS (external file test.css)

    div { border: 3px solid red;}
    

    HTML/jQuery

    <!doctype html >
    <html>
        <head>
           <!-- provide a fallback if js not available -->
           <noscript>
              <link rel="stylesheet" href="test.css" />
           </noscript>
        </head>
        <body>
    
            <div></div>
    
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.js"></script>
            <script>
            $(document).ready(function() {
    
                $.when($.get("test.css"))
                .done(function(response) {
                    $('<style />').text(response).appendTo($('head'));
                    $('div').html(response);
                });
            })
            </script>
        </body>
    </html>
    

    You should see the CSS code inside the div with a red border all around :)
    Enjoy.