条件样式不起作用

时间:2017-10-27 14:44:56

标签: jquery css asp.net iis

我需要条件样式,具体取决于浏览器是否为IE浏览器。

方法1

<!--[if IE]>
  <style>
   .myDiv{background-color: #0F0;}
  </style>
<![endif]-->
<!--[if !IE]>
  <style>
   .myDiv{background-color: #000;}
  </style>
<![endif]-->

方法2

<script type="text/javascript">
  function myFunc()
  {
    if ($.browser.msie) // Internet Explorer
    {
       $(".myDiv").css("background-color", "#0F0");
    }
    else // Other browsers
    {
       $(".myDiv").css("background-color", "#000");
    }
    return false;
  }
  window.onload  = myFunc;
</script>
<div class="myDiv" style="width: 200px;">Hello</div>

当我在本地或测试服务器中托管代码时,这两种方法都可以正常工作。但是当我在生产机器上运行它们时,它们无法正常工作。

当我打开浏览器控制台时(针对方法2),当我在本地或测试服务器上托管时,我可以看到类似的内容

<div class="myDiv" style="width: 200px;" jQuery15487254606012953487="4">
  Hello
</div>

当托管在有问题的服务器中时,我在控制台中看到了这一点

<div class="myDiv" style="width: 200px;">
  Hello
</div>

这种差异是否会暗示我失踪的任何事情?

我使用以下

  • 的jquery-1.3.1.min.js
  • 本地和服务器中的IIS 8.5.9748.0
  • Asp.net with C#

1 个答案:

答案 0 :(得分:0)

当您说window.onload = myFunc();时,您立即呼叫myFunc - 可能在任何要设置样式的元素之前。

myFunc()替换为myFunc(无parens)以设置处理程序。或者,甚至更好,说$(myFunc)并完全停止使用window.onload

除此之外,$.browser has been removed from jQuery。如果您坚持关注正在使用的浏览器,请查看navigator.userAgent。 (但坦率地说,没有充分的理由去关心,并且有一些非常好的理由要关心。)