I've a rare issue with IE. I'm trying to create a page that launches this script when IE version is lower or equal than IE 8 (just a simple alert and a location). When I try to debug this html on IETester the alert only shows up on IE 5.5 and IE 6 but neither in 7 nor 8.
What am I doing wrong?
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<!--[if lte IE 8]>
<script type="text/javascript">
alert('Para poder usar Consumedia necesita tener instalada una version de Internet Explorer 9 o superior');
window.location = "http://www.google.com";
</script>
<![endif]-->
</head>
<body>
</body>
</html>
This is showing me the alert with native IE7.
It seems IETester might have a bug regarding conditional comments. See How do I make IE9 emulate IE7? for an alternative to IETester.
#Pekka has already commented on this matter a couple of times:
When multiple instances of Internet Explorer are installed (or active) on the same system, conditional comments will be resolved against the highest IE version available on the system
EDIT: Doesn't really add much, but I've got only IE7 installed, and it also shows the alert with IETester for IE <= 7.
Sory for my first answer, a don't realize the real problem.
Try to change the if statement:
<!--[if lt IE 9]>
//Fires for IE8 and above
<![endif]-->
See the examples here:
http://css-tricks.com/how-to-create-an-ie-only-stylesheet/
Related
Could somebody help me out read this?
<!--[if gt IE 8]><!-->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<!--<![endif]-->
<!--[if lte IE 8]>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<![endif]-->
I understand that if current browser is greater than ie 8, we end up using the 1.9.1 and if current browser is less than or equal to 8, we end up with 1.7.2
I've got a few questions here;
First one is what if the browser is not even IE? Chrome for example.
How does the above header code gets to include JQuery at all. Obviously it does, but can't see how. Condition is only addressing IE. Isn't it?
Secondly, I am confused on the snytax;
<!--[if gt IE 8]><!--> part looks different than <!--[if lte IE 8]> part. the extra <!--> in the former confuses me.
Here is where I got the snippet from;
http://bombdiggitydesign.com/crisp-2/Crisp-cool/index.html
It somehow loads the JQuery for me ( I'm using Chrome ).
When I examine the viewsource:, I see this
<!--[if gt IE 8]><!-->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="assets/js/jquery-1.9.1.min.js"><\/script>')</script>
<!--<![endif]-->
<!--[if lte IE 8]>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<![endif]-->
and in this, only the http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js is clickable in chrome's view. So, chrome somehow makes it thru the <!--[if gt IE 8]><!--> condition.
Obviously, it works but I am confused as to how.
For your fist question, that's the specialty of IE conditional comments.
For your sencond question,
<!--[if gt IE 8]><!--> //COMMENTS ENDS
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"/>
<!--<![endif]--> //COMMENTS ENDS
This is nothing just comments for their convenience (to be precise READABILITY). But the jQuery 1.9.1 will work in all browsers.
However your jQuery 1.9.1 will be overridden by the jQuery 1.7.2, only in IE <=7 browsers.
FYI: In Internet Explorer 10 HTML conditional comments are not supported when the page is in standards mode (document mode 10)
Hope you understand.
Those conditionals are wrong, that's why. Go here to see how they should be structured: http://www.quirksmode.org/css/condcom.html
You're using wrong "IE Hacks", so your code is invaild.
Here is an article that will help you out:
To Article
conditional comments are ms proprietary markup...so only trident (ie) will read conditional comments....and that's only up to ie10...although you can still use conditional compilation.
idk the exacts about how/what other engines do when they come across them...you're saying chrome sees them...i guess that makes sense...as long as no one is rendering/do anything to it, except for the browsers you are targeting with it.
you're conditional statements are invalid, as the other two gents have pointed out. if you correct the syntax, they'll work just fine.
I'm building a mobile-first site, and I'm stuck on the menu.
Everything works great in Firefox, Chrome, Safari & Opera; as you can see here.
But ofcourse, the pathetic excuse of a browser abortion, internet explorer, doesn't support media queries. So I started browsing around and found the javascript solution for the Idiot Experience media query problem. (See what I did there?) Respond - by scottjehl
So I quickly implemented the script and grabbed my cake to start celebrating this victory over the oozing scrotum of the browser world. But alas, the script did absolutely nothing, and I slipped back into my microsoft induced depression.
I implemented the script into my header like so:
<!--[if (lt IE 9) & (!IEMobile)]>
<script type="text/javascript" src="js/respond.min.js"></script>
<![endif]-->
And I added the comment before closing my mediaquery.
/*/mediaquery*/
Anyone got any idea what might be going wrong here?
Solved it.
Had to do with my DOCTYPE.
Wasn't supporting older versions of IE.
This code fixed it:
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="ie ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="en"> <!--<![endif]-->
I am very puzzled with this one. I thought it was going to be a five minutes problem, became a three days one.
This is the deal.
I have an MVC 3 application. It renders perfect in all browsers but IE 9 simply doesn't show anything.
Now, check this out. Very important.
When i open the "browser's debuggers" for Firefox (Firebug 1.11.1) and IE9 (F12), i found something weird.
Check my attachments...
When i right click on both browsers and ask for View Source, i can see the whole expected HTML there, but in the "debuggers", IE9 shows the body empty (I guess what's actually showing is the final result from rendering?).
Very Important, check in the View Source screenshot, this...
<!DOCTYPE html>
<!--[if lt IE 8 ]><html lang="en" class="no-js ie ie7"><![endif]-->
<!--[if IE 8 ]><html lang="en" class="no-js ie"><![endif]-->
<!--[if (gt IE 8)|!(IE)]><!--><html lang="en" class="no-js"><!--<![endif]-->
<head>
<title>LogOn</title>
.....
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<script type="text/javascript" src="/Scripts/standard.js"></script>
<!--[if lte IE 8]><script type="text/javascript" src="/Scripts/standard.ie.js"></script><![end if]-->
....
</head>
I don't even know what to ask specifically here. Are these [if lte...] statements work in every browser? I don't have a clue what's going on here guys.
Anyone that has walked thru the valley of death before???
Thanks
EDIT:
I am using a template that i purchased on themeforest.net. Their sample (pure HTML) works perfectly fine in all browsers. They also look the same to my code (the header part of course) when i click on ViewSource. That's why i am assuming there is something to do with how i am rendering from MVC.
Answering my own question....
It had to do with this line
<!--[if lte IE 8]><script type="text/javascript" src="#Url.Content("~/Scripts/standard.ie.js")"></script><![endif]-->
It was rendered incorrectly. Now it's all good.
It's possible to load a script only in IE with conditional comments
<!--[if lte IE 7]>
<script type="text/javascript" src="somescript.js"></script>
<![endif]-->
but what if I don't want to load it in IE lte 7 (but still need it in all other browsers)?
Any simple solutions?
P.S. I have a problem with SyntaxHighlighter - too many code slows IE7 down and since I'm short of time, I decided just to turn it off in IE7 for now.
This post says you can use the ! (NOT) operator like [if !IE]
<![if !IE]>
<script type="text/javascript" src="somescript.js"></script>
<![endif]>
<!--[if gte IE 7]>
<script type="text/javascript" src="somescript.js"></script>
<![endif]-->
<!--[if !IE]>
<script type="text/javascript" src="somescript.js"></script>
<![endif]-->
This syntax works good (the script wouldn't be commented in firefox, chrome and so on):
<!--[if !IE]><!-->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<!--<![endif]-->
You could try detecting the browser server-side and then echo the appropriate script includes.
The following has an example on simplistic browser detection in PHP:
http://www.php-scripts.com/20050912/12/
Since conditional statements are not Working in IE (10,11) and only IE(11) is supported by Microsoft and if anyone is still looking at running IE specific JavaScript then this code still works tested in IE(11), and non IE browsers(Chrome,Firefox,Edge).
<script type="text/javascript">
if(/MSIE \d|Trident.*rv:/.test(navigator.userAgent))
{document.write('<script src="../nolng/js/ex1IE.js"><\/script>');}
else
{document.write('<script src="../nolng/js/ex1.js"><\/script>'); // for Chrome,Firefox,Edge}
</script>
I used the examples shown here and elsewhere, and it is really frustrating to see how many places this code example is messed up. Turns out the answer is simple, IE has special 'conditionals' like [if IE], but other browsers need comments to work with the 'conditionals'.
For example, since JQuery 2 doesn't work with IE8, you can do something like this
<!--[if IE ]> (following is only visible to IE)
<script src="./js/lib/jquery-1.6.1.min.js"></script>
<![endif]-->
<!--[if !IE]>--> (extra comment - only visible to non-IE)
<script src="./js/lib/jquery-2.1.1.min.js"></script>
<script src="./js/lib/jquery.mobile-1.4.5.min.js"></script>
<!--<![endif]-->
I have verified the above works in Firefox, Chrome, IE8, Dolphin mobile, and Chrome mobile. You can also specify version. For example, less than IE 9 would be: <!--[if lt IE 9 ]>
For a detailed explanation, check out http://www.sitepoint.com/web-foundations/internet-explorer-conditional-comments/
How do I verify if a site has Javascript enabled and if user's browser is IE 8?
Use conditional comments and some javascript code (it will work only if it's enabled, right? :))
<!--[if IE 8]>
<script type="text/javascript"> /*do something in JS - it's enabled!*/ </script>
<[endif]-->
Or you may want to look at conditional compilation in JS
If for whatever reason you need to know that you are dealing with IE8,
you have to watch for the IE9 preview, which smells like IE8,
but has some new objects:
<!--[if IE 8]>
<script type="text/javascript">
if(document.addEventListener) alert('IE9');
if(document.documentMode) alert('IE8'+ running as '+document.documentMode);
</script>
<[endif]-->