最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

html - Do something if web browser is IE, in JavaScript - Stack Overflow

programmeradmin17浏览0评论

Where do I place this script in my HTML for it to work? And what changes do I have to make to it?

<script type="text/javascript">
var browser=navigator.appName;
if(browser="Microsoft Internet Explorer")
  {
  document.getElementById("html").innerHTML="\
  <body><p>Your browser is IE.</p></body>";
  }
</script>

Where do I place this script in my HTML for it to work? And what changes do I have to make to it?

<script type="text/javascript">
var browser=navigator.appName;
if(browser="Microsoft Internet Explorer")
  {
  document.getElementById("html").innerHTML="\
  <body><p>Your browser is IE.</p></body>";
  }
</script>
Share Improve this question edited Jan 29, 2011 at 8:26 templatetypedef 373k111 gold badges944 silver badges1.1k bronze badges asked Jan 29, 2011 at 8:16 Web_DesignerWeb_Designer 74.6k93 gold badges209 silver badges266 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 7

Could I make a slightly alternate suggestion, skipping the spoofable UA string, and using a Microsoft-implemented (and standards-pliant) strategy:

<!--[if ie]>
    <script type="text/javascript">
        document.getElementyId("html").innerHTML = "<body><p>Your browser is IE.</p></body>";
    </script>
<![endif]-->

To use this put it in the head of the document. I don't think it can be placed inside script tags (since it's based on html ment syntax, not JavaScript).

This uses conditional ments (Quirksmode link).

If at all possible, I would suggest avoiding direct browser detection.

Almost every case where someone wants to detect a specific browser (usually IE), it is because there is a particular feature that they want to use which isn't available in that browser, or has bugs.

But browser detection fails as a strategy here for a number of reasons:

  • You don't know whether a future version of that browser may correct the problem, in which case your code to fix the issue may itself cause problems.
  • If another browser also has a problem with that feature, you would have to detect that browser as well. Taken to the logical extreme, since no two browsers have exactly the same set of features, you end up having to detect every possible bination of browser, version and operating system.
  • Browser detection is virtually impossible to guarantee to be accurate. Most browser detection scripts are based on hacks that trigger quirks that only affect a particular browser, and most are pretty un-reliable.
  • Even just IE detecting isn't good enough. There is a big difference between IE6, IE7 and IE8. And IE9 is just around the corner, which will be massively different again.

So what should you do instead of browser detection?

  • Detect the feature. There are a number of ways of doing this, but the best solution I know of is a script called Modernizr. Place this script in your site, and your page will be given a bunch of CSS classes and Javascript properties which you can use to determine whether a given feature is available or not.
    For example, if you want to use gradients on your site, most browsers can use CSS for this, but IE and older versions of other browsers cannot. For these browsers you easily can use a background image instead. Modernizr will give you a CSS class of either cssgradients or no-cssgradients, and you can style these two classes accordingly.

  • Add the missing features to the browser. This is more tricky, but for certain features it can be done, particularly for IE. A good example is CSS3Pie which is a hack that allows IE to use the CSS border-radius feature (and one or two other features too) which is available in all other browsers. There are whole range of other little scripts like this which can improve the functionality of IE.

  • Use a library like JQuery which does all this work for you. With JQuery, you can be much more confident that most of your Javascript code is going to work across all browsers.

If you must use browser detection to tell if the user is running IE (and I accept that there are some occasions when it is necessary), then use conditional ments, as per @David Thomas's answer. But do so sparingly, after considering any other ways around it.

if(browser=="Microsoft Internet Explorer")

== for parison, = for assignment

Place it in the head tags.

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论