Как заставить Internet Explorer применять стили CSS - PullRequest
0 голосов
/ 20 апреля 2009

У меня есть пара CSS-селекторов, как это:

table.SearchCustomerResults > thead > tr > th[sortOrder="0"] {}
table.SearchCustomerResults > thead > tr > th[sortOrder="1"] {}

затем я установил атрибут расширения sortOrder для каждой ячейки в JavaScript. Однако, измененный стиль не виден в браузере (IE7, возможно, другой), пока я немного не переместил курсор. Как заставить стили быть переоценены?

Редактировать: я не использовал IE6, как первоначально заявлено, но IE7. Однако вопрос все еще остается.

Ответы [ 3 ]

2 голосов
/ 20 апреля 2009

Существуют различные хакерские способы принудительного повторного рендеринга. script.aculo.us имеет метод с именем forceRerendering (естественно), который выглядит так:

someElement.appendChild(document.createTextNode(' '));
someElement.removeChild(someElement.lastChild);

Это должно сработать и в этом случае.

1 голос
/ 13 июня 2012

У меня была похожая проблема: после вставки нового div в IE не применялись поля.
следующий код помог:
setTimeout (function () {newDiv.addClass ('tratata'). removeClass ('tratata');}, 0); // синтаксис jquery

1 голос
/ 20 апреля 2009

IE6 не поддерживает атрибуты или дочерние селекторы, поэтому это не должно работать вообще. Используете ли вы ie7-js ?


Хорошо, теперь я вижу. Это похоже на ошибку в IE (использование div и title для th и sortOrder имеет ту же проблему).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <style>
      th[sortOrder="0"] {color:red}
      th[sortOrder="1"] {color:blue}
    </style>
    <script>
      function changeSortOrder() {
        // swap the orders so that blue is actually red and vice versa
        document.getElementById("hdr0").setAttribute("sortOrder","1");
        document.getElementById("hdr1").setAttribute("sortOrder","0");
        //document.getElementById("hdr0").innerHTML += "";
        //document.getElementById("hdr1").innerHTML += "";
      }
    </script>
  </head>
  <body onload="changeSortOrder()">
    <table class="SearchCustomerResults">
      <thead><tr>
        <th sortOrder="0" id="hdr0">red</th>
        <th sortOrder="1" id="hdr1">blue</th>
      </tr></thead>
    </table>
  </body>
</html>

Строки, которые изменяют innerHTML, похоже, работают вокруг ошибки. Однако не могу найти никаких ссылок в Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...