IE 版本 10.0.9200 “忘记”了 CSS 样式

IE version 10.0.9200 "forgets" CSS styles

本文关键字:CSS 样式 忘记 版本 9200 IE      更新时间:2023-09-26

我有一个有 3 个选项卡的"选项卡工具栏"。 用户可以单击一个选项卡,我们的网页会根据单击的 3 个选项卡中的哪个显示不同的数据。

为了提醒用户他们"选择"了 3 个选项卡中的哪一个,我在单击它时即时更改它的 CSS 类。

"选定"选项卡将进行以下更改:(1) 带渐变的黄色背景;(2)字体较大; (3) 所选选项卡的宽度和高度分别增加约 6 个像素。

它在火狐中工作正常。 但在 IE 10.0.9200 中,对所选选项卡的 CSS 类的更改在背景颜色和渐变方面失败。 例如,当第一次选择选项卡 #3 时,没问题 - 出现黄色渐变(更大的字体和增加的宽度和高度也是如此)。

但是,如果我单击其他选项卡,然后再次单击选项卡#3,IE似乎"忘记"了"所选"CSS类的一部分。 第二次(以及第三次和第四次等)我单击以选择选项卡#3时,字体大小增加和宽度和高度增加显示,但缺少带有渐变的彩色背景。

如果我在IE中的页面上进行"重新加载",则BAM带有渐变的彩色背景会突然返回。

下面是"选定的"CSS 类:

 .selectedTabClass{
-moz-box-shadow:inset 0px 1px 0px 0px #fff6af;
-webkit-box-shadow:inset 0px 1px 0px 0px #fff6af;
box-shadow:inset 0px 1px 0px 0px #fff6af;
background:-webkit-gradient( linear, left top, left bottom,  
                  color-stop(0.05, #ffec64), color-stop(1, #ffab23) );
background:-moz-linear-gradient( center top, #ffec64 5%, #ffab23 100% );
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffec64', 
               endColorstr='#ffab23');
background-color:#ffec64;
-webkit-border-top-left-radius:15px;
-moz-border-radius-topleft:15px;
border-top-left-radius:15px;
-webkit-border-top-right-radius:15px;
-moz-border-radius-topright:15px;
border-top-right-radius:15px;
-webkit-border-bottom-right-radius:0px;
-moz-border-radius-bottomright:0px;
border-bottom-right-radius:0px;
-webkit-border-bottom-left-radius:0px;
-moz-border-radius-bottomleft:0px;
border-bottom-left-radius:0px;
text-indent:0;
border:1px solid #ffaa22;
display:inline-block;
color:#333333;
font-family:Arial;
font-size:18px;
font-weight:bold;
font-style:normal;
height:65px;
width:186px;
text-decoration:none;
text-align:center;
text-shadow:1px 1px 0px #ffee66;
 }
 .selectedTabClass:hover {
background:-webkit-gradient( linear, left top, left bottom, 
              color-stop(0.05, #ffab23), color-stop(1, #ffec64) );
background:-moz-linear-gradient( center top, #ffab23 5%, #ffec64 100% );
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffab23', 
              endColorstr='#ffec64');
background-color:#ffab23;
 }
 .selectedTabClass:active {
position:relative;
top:1px;
 }

这是 HTML:

  <label class="selectedTabClass" id="tab3"
         onclick="handleTabSelect(3, this)">this is Tab #3</label>

这是Javascript:

  function handleTabSelect(whichTab, thisOne)
  {
      document.getElementById(whichTab).className = "selectedTabClass";
  }

我需要做些什么才能使IE像Firefox一样一致地运行?

嗨,下面的代码是我发布的jquery代码的确切纯js代码

function hasClass(ele,cls) {
  return ele.className.match(new RegExp('(''s|^)'+cls+'(''s|$)'));
}
function addClass(ele,cls) {
  if (!hasClass(ele,cls)) ele.className += " "+cls;
}
function removeClass(ele,cls) {
  if (hasClass(ele,cls)) {
      var reg = new RegExp('(''s|^)'+cls+'(''s|$)');
      ele.className=ele.className.replace(reg,' ');
  }
}

ele--> id 和 cls-->类名。如果没有,应该恢复工作。.例如像

function handleTabSelect(whichTab, thisOne)
  {
         var ele = document.getElementById(whichTab);
    addClass(ele, "be-still");
    // or
    removeClass(ele, "be-still");
  }

我能够解决这个问题,但它的微妙原因?,我还没有掌握,我修复了它,但我不确定为什么它首先被"破坏"。

如上所述,我们网站上某些"缺少"CSS样式的问题仅在使用IE 10.0.9200访问位于我们的托管服务提供商的网站时发生。

当访问我们内部开发服务器上本地运行的网站时,IE 10.0.9200没有任何问题。 因此,我们认为是我们托管服务提供商的Web服务器设置(或与我们的内部开发Web服务器不同),因为相同的IE浏览器版本在我们的本地开发服务器上没有出现此问题。

我们的网站会动态更改选项卡式工具栏的CSS"className",以指示选择了哪个选项卡。 每个选项卡都是一个"标签"html元素。

选项卡有 2 种类型的 CSS 更改:
(1)在我们的javascript中,一行代码document.getElementById('tab3').style.backgroundColor = "white"
(2)紧接着,仅在某些情况下,我们通过以下方式更改了选项卡的类名:document.getElementById('tab1').className = "showThisTabIsSelectedCssClass";

在 Firefox 和运行在我们开发服务器上的 IE 10.0.9200 中,"className"的更改似乎"清除"(或重置)了我们在某些条件下所做的样式.backgroundColor 更改,就在更改选项卡元素的 CSS "className"之前。

Firefox 在开放网络上访问我们的网站时也做了同样的事情(当我们重置"className"时,擦除或重置 style.backgroundColor 更改)。

但无论出于何种原因,相同版本的IE 10.0.9200并没有丢弃style.backgroundColor="white"更改,即使更改了className。 style.backgroundColor="white" 将 tab 元素的背景更改为白色,然后我们在特定条件下更改了 'className',新的 CSS 类对选项卡施加了蓝色背景颜色,但在 className 更改后白色背景颜色仍然存在。

我不确定为什么IE 10.0.9200仅在查看我们的托管服务提供商在线托管的网站时表现出此问题,而不是在我们的本地开发计算机上显示我们的网站。

该修复要求我们有条件地避免代码 style.backgroundColor="white" 行,方法是在代码中预先确定我们最终需要更改选项卡元素的 CSS className。

换句话说,IE 10.0.9200 即使在更改了元素的"className"之后,仍然保留了一个 style.backgroundColor="white" 设置,尽管新的 CSS 类强加了它自己的 backgroundColor。