JavaScript не может убедить мышь изменить курсор - PullRequest
2 голосов
/ 22 сентября 2010

У меня есть страница ASP.NET с сеткой Infragistics.Я обрабатываю события mouseover, mouseout над строками сетки в нескольких методах в Javascript, чтобы изменить курсор мыши на указатель и вернуться к значению по умолчанию при наведении указателя мыши на строки.Я также переключаю цвет строки при наведении мыши.

Когда я запускаю страницу в режиме отладки локально, она работает нормально.Когда я публикую на тестовом сервере и запускаю его вне VS в Iexplore (8), курсор мыши не меняется.Стрелка остается.Строка корректно переключает цвет фона.

Я подумал, что это проблема с кэшированием, но когда я добавляю окно оповещения в методы для отображения document.body.style.cursor, оно показывает состояние курсорав оповещении правильно;это просто не меняет курсор мыши.Я очистил кеш в браузере, удалил и переиздал, добавил строки запросов GUID в ссылки на файлы javascript и т. Д.

Если я пробую страницу на тестовом сервере в Firefox, он правильно показывает курсор указателя.

 function _projGrid_MouseOverHandler(gridName, id, objectType) {

    if (objectType == 0) {
        document.body.style.cursor = 'pointer';
       // alert('mouse pointer should be: ' + document.body.style.cursor);
        var cell = igtbl_getCellById(id);
        var elem = cell.Element;
        setRowBackColor(cell.Row, "F0E68C");
    }
}

function _projGrid_MouseOutHandler(gridName, id, objectType) {
    if (objectType == 0) {
        document.body.style.cursor = 'default';
       // alert('mouse pointer should be: ' + document.body.style.cursor);
        var cell = igtbl_getCellById(id);
        setRowBackColor(cell.Row, "white");
    }
}

function setRowBackColor(row, color) {
    var cells = row.getCellElements();
    for (var i = 0; i < cells.length; i++) {
        cells[i].style.backgroundColor = color;
    }

Любые идеи будут приветствоваться!

ОБНОВЛЕНИЕ: У меня также есть похожие проблемы с CSS

Ответы [ 3 ]

1 голос
/ 22 сентября 2010

Ответ найден здесь

"Когда IE рендерится на localhost, он будет использовать стандартный режим совместимости.

Однако при рендеринге в интрасети будет использоваться режим совместимости.

Не спрашивайте меня, почему он это делает, это просто одна из тех произвольных вещей MS, чтобы оживить жизнь наших разработчиков.

Просто добавьте это в заголовок, чтобы перевести IE в стандартный режим совместимости:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />"
0 голосов
/ 22 сентября 2010

Вы должны установить курсор на уровне ячейки, а не на уровне документа.

Не уверен, почему вы устанавливаете курсор в первую очередь с помощью JavaScript, когда вы можете просто установить его в файле CSS для рассматриваемых tds.

0 голосов
/ 22 сентября 2010

Сделайте это с помощью CSS:

.grid .row:hover {
  cursor: pointer;
  background-color: #F0E68C;
}

ИЛИ

.grid tr:hover {
   /* ... */
}

Если у вас нет необходимых классов, вы можете попробовать установить их с помощью чего-то вроде jQuery: $("selector").addClass("row");Вы также можете filter() с пользовательской функцией или работать с каждым разделом отдельно, если необходимо:

$(".grid").each(function() {
  $(this).find("tr > td").each(function() {
    $(this).addClass("cell");
  });
});

Обратите внимание, что приведенный выше пример только для иллюстрации.

...