[jQuery] Re: IE6 Stylesheet Woes
Thanks a heap for your help James, after lots of trial and error I managed to track down the source of the problem. It's a very curious IE issue, your examples work fine provided you don't try to access document.stylesheets first, if you do then that seems to kick IE off on a parsing spree. Oh well, all fixed now, thanks for your help. Andy. On 8 Oct, 17:03, James Dempster [EMAIL PROTECTED] wrote: Thats strange, I've added lots of strange chars and it still works ok for me. Screenshots.http://www.jdempster.com/public/jss/ie6.pnghttp://www.jdempster.com/public/jss/ie7.pnghttp://www.jdempster.com/public/jss/ff2.png I did test it in more but these will do for now. Can any one else check their IE? /James On 10/8/07, Andy Kent [EMAIL PROTECTED] wrote: This has the same issue I'm afraid. It works for all those examples as IE thinks they are valid. Give something like div~p:first a go though and I you get the selector replaced with the string 'UNKOWN' in the innerHTML source code. Thanks for the attempt but sill no prize yet! :( *tears* Andy. On 8 Oct, 14:43, James Dempster [EMAIL PROTECTED] wrote: I've pinched some code from Christian Bach (http://lovepeacenukes.com/ jquery/ie6cssfix/) and put it into it's own test case. Tested it on Win IE 6/7, FF 1.5/2, Safari3, Opera 9 and they all showed the same results. Test it out. Hopefully it can help .http://www.jdempster.com/public/jss/js_css.html On Oct 8, 11:29 am, Andy Kent [EMAIL PROTECTED] wrote: Unfortunately after some experimentation this method still appears to yield 'UNKNOWN' in place of selectors that are not understood by IE. Poo. On 8 Oct, 11:15, Andy Kent [EMAIL PROTECTED] wrote: Thanks Mike, that's a huge help and sounds like it will solve my problem perfectly. I will have a play now. Should jQuery not be clever enough to handle this internally when you call .text() on a style element? Is it worth filing as a bug do you think? Andy. On 8 Oct, 11:07, Michael Geary [EMAIL PROTECTED] wrote: Andy, you can read or write the content of an IE stylesheet with: $('style')[n].styleSheet.cssText where n is the index of the stylesheet you want. Instead of browser detection, I test for the presence of that .styleSheet property, and then either use .styleSheet.cssText or .text() depending. Some example non-jQuery code that I use (shows writing and replacing but not reading): function addStyle( css ) { var style = document.createElement( 'style' ); style.type = 'text/css'; head.appendChild( style ); if( style.styleSheet ) style.styleSheet.cssText = css; else style.appendChild( document.createTextNode(css) ); return style; } function changeStyle( style, css ) { if( style.styleSheet ) style.styleSheet.cssText = css; else style.replaceChild( document.createTextNode(css), style.firstChild ); return style; } -Mike From: Andy Kent I'm working on fixing my JSS plugin for IE, it appears that IE has really problems with showing you the source of stylesheets that are between style tags. $('style').text() - returns null $('style').html() - returns the source but it is modified, e.g. all non-supported selectors are changed to 'UNKOWN' (very unhelpful!) Before I delve deeper into this does anyone have a work around already?? I assume this is supposed to be some sort of security feature but it seems very strange seeing as loading external styles works as expected. Thanks, Andy.
[jQuery] Re: IE6 Stylesheet Woes
Hmm interestingly odd issue. Boo Boo to M$ IE /James On 10/9/07, Andy Kent [EMAIL PROTECTED] wrote: Thanks a heap for your help James, after lots of trial and error I managed to track down the source of the problem. It's a very curious IE issue, your examples work fine provided you don't try to access document.stylesheets first, if you do then that seems to kick IE off on a parsing spree. Oh well, all fixed now, thanks for your help. Andy. On 8 Oct, 17:03, James Dempster [EMAIL PROTECTED] wrote: Thats strange, I've added lots of strange chars and it still works ok for me. Screenshots .http://www.jdempster.com/public/jss/ie6.pnghttp://www.jdempster.com/public/jss/ie7.pnghttp://www.jdempster.com/public/jss/ff2.png I did test it in more but these will do for now. Can any one else check their IE? /James On 10/8/07, Andy Kent [EMAIL PROTECTED] wrote: This has the same issue I'm afraid. It works for all those examples as IE thinks they are valid. Give something like div~p:first a go though and I you get the selector replaced with the string 'UNKOWN' in the innerHTML source code. Thanks for the attempt but sill no prize yet! :( *tears* Andy. On 8 Oct, 14:43, James Dempster [EMAIL PROTECTED] wrote: I've pinched some code from Christian Bach ( http://lovepeacenukes.com/ jquery/ie6cssfix/) and put it into it's own test case. Tested it on Win IE 6/7, FF 1.5/2, Safari3, Opera 9 and they all showed the same results. Test it out. Hopefully it can help .http://www.jdempster.com/public/jss/js_css.html On Oct 8, 11:29 am, Andy Kent [EMAIL PROTECTED] wrote: Unfortunately after some experimentation this method still appears to yield 'UNKNOWN' in place of selectors that are not understood by IE. Poo. On 8 Oct, 11:15, Andy Kent [EMAIL PROTECTED] wrote: Thanks Mike, that's a huge help and sounds like it will solve my problem perfectly. I will have a play now. Should jQuery not be clever enough to handle this internally when you call .text() on a style element? Is it worth filing as a bug do you think? Andy. On 8 Oct, 11:07, Michael Geary [EMAIL PROTECTED] wrote: Andy, you can read or write the content of an IE stylesheet with: $('style')[n].styleSheet.cssText where n is the index of the stylesheet you want. Instead of browser detection, I test for the presence of that .styleSheet property, and then either use .styleSheet.cssText or .text() depending. Some example non-jQuery code that I use (shows writing and replacing but not reading): function addStyle( css ) { var style = document.createElement( 'style' ); style.type = 'text/css'; head.appendChild( style ); if( style.styleSheet ) style.styleSheet.cssText = css; else style.appendChild( document.createTextNode(css) ); return style; } function changeStyle( style, css ) { if( style.styleSheet ) style.styleSheet.cssText = css; else style.replaceChild( document.createTextNode(css), style.firstChild ); return style; } -Mike From: Andy Kent I'm working on fixing my JSS plugin for IE, it appears that IE has really problems with showing you the source of stylesheets that are between style tags. $('style').text() - returns null $('style').html() - returns the source but it is modified, e.g. all non-supported selectors are changed to 'UNKOWN' (very unhelpful!) Before I delve deeper into this does anyone have a work around already?? I assume this is supposed to be some sort of security feature but it seems very strange seeing as loading external styles works as expected. Thanks, Andy.
[jQuery] Re: IE6 Stylesheet Woes
Andy, you can read or write the content of an IE stylesheet with: $('style')[n].styleSheet.cssText where n is the index of the stylesheet you want. Instead of browser detection, I test for the presence of that .styleSheet property, and then either use .styleSheet.cssText or .text() depending. Some example non-jQuery code that I use (shows writing and replacing but not reading): function addStyle( css ) { var style = document.createElement( 'style' ); style.type = 'text/css'; head.appendChild( style ); if( style.styleSheet ) style.styleSheet.cssText = css; else style.appendChild( document.createTextNode(css) ); return style; } function changeStyle( style, css ) { if( style.styleSheet ) style.styleSheet.cssText = css; else style.replaceChild( document.createTextNode(css), style.firstChild ); return style; } -Mike From: Andy Kent I'm working on fixing my JSS plugin for IE, it appears that IE has really problems with showing you the source of stylesheets that are between style tags. $('style').text() - returns null $('style').html() - returns the source but it is modified, e.g. all non-supported selectors are changed to 'UNKOWN' (very unhelpful!) Before I delve deeper into this does anyone have a work around already?? I assume this is supposed to be some sort of security feature but it seems very strange seeing as loading external styles works as expected. Thanks, Andy.
[jQuery] Re: IE6 Stylesheet Woes
Thanks Mike, that's a huge help and sounds like it will solve my problem perfectly. I will have a play now. Should jQuery not be clever enough to handle this internally when you call .text() on a style element? Is it worth filing as a bug do you think? Andy. On 8 Oct, 11:07, Michael Geary [EMAIL PROTECTED] wrote: Andy, you can read or write the content of an IE stylesheet with: $('style')[n].styleSheet.cssText where n is the index of the stylesheet you want. Instead of browser detection, I test for the presence of that .styleSheet property, and then either use .styleSheet.cssText or .text() depending. Some example non-jQuery code that I use (shows writing and replacing but not reading): function addStyle( css ) { var style = document.createElement( 'style' ); style.type = 'text/css'; head.appendChild( style ); if( style.styleSheet ) style.styleSheet.cssText = css; else style.appendChild( document.createTextNode(css) ); return style; } function changeStyle( style, css ) { if( style.styleSheet ) style.styleSheet.cssText = css; else style.replaceChild( document.createTextNode(css), style.firstChild ); return style; } -Mike From: Andy Kent I'm working on fixing my JSS plugin for IE, it appears that IE has really problems with showing you the source of stylesheets that are between style tags. $('style').text() - returns null $('style').html() - returns the source but it is modified, e.g. all non-supported selectors are changed to 'UNKOWN' (very unhelpful!) Before I delve deeper into this does anyone have a work around already?? I assume this is supposed to be some sort of security feature but it seems very strange seeing as loading external styles works as expected. Thanks, Andy.
[jQuery] Re: IE6 Stylesheet Woes
Unfortunately after some experimentation this method still appears to yield 'UNKNOWN' in place of selectors that are not understood by IE. Poo. On 8 Oct, 11:15, Andy Kent [EMAIL PROTECTED] wrote: Thanks Mike, that's a huge help and sounds like it will solve my problem perfectly. I will have a play now. Should jQuery not be clever enough to handle this internally when you call .text() on a style element? Is it worth filing as a bug do you think? Andy. On 8 Oct, 11:07, Michael Geary [EMAIL PROTECTED] wrote: Andy, you can read or write the content of an IE stylesheet with: $('style')[n].styleSheet.cssText where n is the index of the stylesheet you want. Instead of browser detection, I test for the presence of that .styleSheet property, and then either use .styleSheet.cssText or .text() depending. Some example non-jQuery code that I use (shows writing and replacing but not reading): function addStyle( css ) { var style = document.createElement( 'style' ); style.type = 'text/css'; head.appendChild( style ); if( style.styleSheet ) style.styleSheet.cssText = css; else style.appendChild( document.createTextNode(css) ); return style; } function changeStyle( style, css ) { if( style.styleSheet ) style.styleSheet.cssText = css; else style.replaceChild( document.createTextNode(css), style.firstChild ); return style; } -Mike From: Andy Kent I'm working on fixing my JSS plugin for IE, it appears that IE has really problems with showing you the source of stylesheets that are between style tags. $('style').text() - returns null $('style').html() - returns the source but it is modified, e.g. all non-supported selectors are changed to 'UNKOWN' (very unhelpful!) Before I delve deeper into this does anyone have a work around already?? I assume this is supposed to be some sort of security feature but it seems very strange seeing as loading external styles works as expected. Thanks, Andy.
[jQuery] Re: IE6 Stylesheet Woes
I've pinched some code from Christian Bach (http://lovepeacenukes.com/ jquery/ie6cssfix/) and put it into it's own test case. Tested it on Win IE 6/7, FF 1.5/2, Safari3, Opera 9 and they all showed the same results. Test it out. Hopefully it can help. http://www.jdempster.com/public/jss/js_css.html On Oct 8, 11:29 am, Andy Kent [EMAIL PROTECTED] wrote: Unfortunately after some experimentation this method still appears to yield 'UNKNOWN' in place of selectors that are not understood by IE. Poo. On 8 Oct, 11:15, Andy Kent [EMAIL PROTECTED] wrote: Thanks Mike, that's a huge help and sounds like it will solve my problem perfectly. I will have a play now. Should jQuery not be clever enough to handle this internally when you call .text() on a style element? Is it worth filing as a bug do you think? Andy. On 8 Oct, 11:07, Michael Geary [EMAIL PROTECTED] wrote: Andy, you can read or write the content of an IE stylesheet with: $('style')[n].styleSheet.cssText where n is the index of the stylesheet you want. Instead of browser detection, I test for the presence of that .styleSheet property, and then either use .styleSheet.cssText or .text() depending. Some example non-jQuery code that I use (shows writing and replacing but not reading): function addStyle( css ) { var style = document.createElement( 'style' ); style.type = 'text/css'; head.appendChild( style ); if( style.styleSheet ) style.styleSheet.cssText = css; else style.appendChild( document.createTextNode(css) ); return style; } function changeStyle( style, css ) { if( style.styleSheet ) style.styleSheet.cssText = css; else style.replaceChild( document.createTextNode(css), style.firstChild ); return style; } -Mike From: Andy Kent I'm working on fixing my JSS plugin for IE, it appears that IE has really problems with showing you the source of stylesheets that are between style tags. $('style').text() - returns null $('style').html() - returns the source but it is modified, e.g. all non-supported selectors are changed to 'UNKOWN' (very unhelpful!) Before I delve deeper into this does anyone have a work around already?? I assume this is supposed to be some sort of security feature but it seems very strange seeing as loading external styles works as expected. Thanks, Andy.
[jQuery] Re: IE6 Stylesheet Woes
This has the same issue I'm afraid. It works for all those examples as IE thinks they are valid. Give something like div~p:first a go though and I you get the selector replaced with the string 'UNKOWN' in the innerHTML source code. Thanks for the attempt but sill no prize yet! :( *tears* Andy. On 8 Oct, 14:43, James Dempster [EMAIL PROTECTED] wrote: I've pinched some code from Christian Bach (http://lovepeacenukes.com/ jquery/ie6cssfix/) and put it into it's own test case. Tested it on Win IE 6/7, FF 1.5/2, Safari3, Opera 9 and they all showed the same results. Test it out. Hopefully it can help.http://www.jdempster.com/public/jss/js_css.html On Oct 8, 11:29 am, Andy Kent [EMAIL PROTECTED] wrote: Unfortunately after some experimentation this method still appears to yield 'UNKNOWN' in place of selectors that are not understood by IE. Poo. On 8 Oct, 11:15, Andy Kent [EMAIL PROTECTED] wrote: Thanks Mike, that's a huge help and sounds like it will solve my problem perfectly. I will have a play now. Should jQuery not be clever enough to handle this internally when you call .text() on a style element? Is it worth filing as a bug do you think? Andy. On 8 Oct, 11:07, Michael Geary [EMAIL PROTECTED] wrote: Andy, you can read or write the content of an IE stylesheet with: $('style')[n].styleSheet.cssText where n is the index of the stylesheet you want. Instead of browser detection, I test for the presence of that .styleSheet property, and then either use .styleSheet.cssText or .text() depending. Some example non-jQuery code that I use (shows writing and replacing but not reading): function addStyle( css ) { var style = document.createElement( 'style' ); style.type = 'text/css'; head.appendChild( style ); if( style.styleSheet ) style.styleSheet.cssText = css; else style.appendChild( document.createTextNode(css) ); return style; } function changeStyle( style, css ) { if( style.styleSheet ) style.styleSheet.cssText = css; else style.replaceChild( document.createTextNode(css), style.firstChild ); return style; } -Mike From: Andy Kent I'm working on fixing my JSS plugin for IE, it appears that IE has really problems with showing you the source of stylesheets that are between style tags. $('style').text() - returns null $('style').html() - returns the source but it is modified, e.g. all non-supported selectors are changed to 'UNKOWN' (very unhelpful!) Before I delve deeper into this does anyone have a work around already?? I assume this is supposed to be some sort of security feature but it seems very strange seeing as loading external styles works as expected. Thanks, Andy.
[jQuery] Re: IE6 Stylesheet Woes
Thats strange, I've added lots of strange chars and it still works ok for me. Screenshots. http://www.jdempster.com/public/jss/ie6.png http://www.jdempster.com/public/jss/ie7.png http://www.jdempster.com/public/jss/ff2.png I did test it in more but these will do for now. Can any one else check their IE? /James On 10/8/07, Andy Kent [EMAIL PROTECTED] wrote: This has the same issue I'm afraid. It works for all those examples as IE thinks they are valid. Give something like div~p:first a go though and I you get the selector replaced with the string 'UNKOWN' in the innerHTML source code. Thanks for the attempt but sill no prize yet! :( *tears* Andy. On 8 Oct, 14:43, James Dempster [EMAIL PROTECTED] wrote: I've pinched some code from Christian Bach (http://lovepeacenukes.com/ jquery/ie6cssfix/) and put it into it's own test case. Tested it on Win IE 6/7, FF 1.5/2, Safari3, Opera 9 and they all showed the same results. Test it out. Hopefully it can help .http://www.jdempster.com/public/jss/js_css.html On Oct 8, 11:29 am, Andy Kent [EMAIL PROTECTED] wrote: Unfortunately after some experimentation this method still appears to yield 'UNKNOWN' in place of selectors that are not understood by IE. Poo. On 8 Oct, 11:15, Andy Kent [EMAIL PROTECTED] wrote: Thanks Mike, that's a huge help and sounds like it will solve my problem perfectly. I will have a play now. Should jQuery not be clever enough to handle this internally when you call .text() on a style element? Is it worth filing as a bug do you think? Andy. On 8 Oct, 11:07, Michael Geary [EMAIL PROTECTED] wrote: Andy, you can read or write the content of an IE stylesheet with: $('style')[n].styleSheet.cssText where n is the index of the stylesheet you want. Instead of browser detection, I test for the presence of that .styleSheet property, and then either use .styleSheet.cssText or .text() depending. Some example non-jQuery code that I use (shows writing and replacing but not reading): function addStyle( css ) { var style = document.createElement( 'style' ); style.type = 'text/css'; head.appendChild( style ); if( style.styleSheet ) style.styleSheet.cssText = css; else style.appendChild( document.createTextNode(css) ); return style; } function changeStyle( style, css ) { if( style.styleSheet ) style.styleSheet.cssText = css; else style.replaceChild( document.createTextNode(css), style.firstChild ); return style; } -Mike From: Andy Kent I'm working on fixing my JSS plugin for IE, it appears that IE has really problems with showing you the source of stylesheets that are between style tags. $('style').text() - returns null $('style').html() - returns the source but it is modified, e.g. all non-supported selectors are changed to 'UNKOWN' (very unhelpful!) Before I delve deeper into this does anyone have a work around already?? I assume this is supposed to be some sort of security feature but it seems very strange seeing as loading external styles works as expected. Thanks, Andy.