keithclark / selectivizr

selectivizr is a JavaScript utility that emulates CSS3 pseudo-classes and attribute selectors in Internet Explorer 6-8.
1.71k stars 246 forks source link

Sass output breaking loadStyleSheet() #93

Open CHEWX opened 9 years ago

CHEWX commented 9 years ago

I kept getting an error with IE8 on line 383:

    function loadStyleSheet( url ) {
        xhr.open("GET", url, false);
        xhr.send();
        return (xhr.status==200) ? xhr.responseText : EMPTY_STRING;
    };

This is because my Sass was being outputted as compressed, it needs to be compact.

I think this should be on the docs, took a long while to figure out.

The best way would be to output 2 stylesheets. One as compressed 'main.css' and one 'main-ie.css' as compact and conditionally load them.

ArmorDarks commented 9 years ago

Having two versions of css just because of that error doesn't sound good, to be honest...

Duplicate of https://github.com/keithclark/selectivizr/issues/66

ganlanyuan commented 8 years ago

I encountered this problem too, but later I figured out that Selectivizr has some issues dealing with @import rule and urls. After I change lines 447-455

return loadStyleSheet(url).replace(RE_COMMENT, EMPTY_STRING).
            replace(RE_IMPORT, function( match, quoteChar, importUrl, quoteChar2, importUrl2, media ) {
                var cssText = parseStyleSheet(resolveUrl(importUrl || importUrl2, url));
                return (media) ? "@media " + media + " {" + cssText + "}" : cssText;
            }).
            replace(RE_ASSET_URL, function( match, isBehavior, quoteChar, assetUrl ) { 
                quoteChar = quoteChar || EMPTY_STRING;
                return isBehavior ? match : " url(" + quoteChar + resolveUrl(assetUrl, url, true) + quoteChar + ") "; 
});

to

return loadStyleSheet(url).replace(RE_COMMENT, EMPTY_STRING);

This was fixed. Though I don't know the purpose of these two replace()s.

ganlanyuan commented 8 years ago

Sorry, jesstelford actually fixed this issue. Check https://github.com/keithclark/selectivizr/pull/69.