2010-09-21 3 views
2

J'ai une page ASP.NET avec un webgrid Infragistics dessus. Je gère le mouseover, les événements mouseout sur les lignes de la grille dans un couple de méthodes en Javascript pour changer le curseur de la souris pour le pointeur et revenir à la valeur par défaut comme ils souris sur les lignes. Je bascule aussi la couleur de la rangée de la souris. Lorsque j'exécute la page en mode de débogage localement, cela fonctionne correctement.JavaScript n'est pas en mesure de convaincre la souris de changer son curseur

Lorsque je publie sur le serveur de test et l'exécute en dehors de VS dans Iexplore (8), le curseur de la souris ne change pas. Il reste la flèche. Cependant, la ligne bascule la couleur d'arrière-plan correctement. J'ai pensé qu'il s'agissait d'un problème de mise en cache, mais lorsque j'ajoute une boîte d'alerte dans les méthodes pour afficher le document.body.style.cursor, l'état du curseur s'affiche correctement dans l'alerte; ça ne change pas le curseur de la souris. J'ai effacé le cache dans le navigateur, supprimé et republié, ajouté des chaînes de requête GUID aux liens de fichiers javascript, etc.

Si j'essaie la page sur le serveur de test dans Firefox, il affiche correctement le curseur du pointeur.

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; 
    } 

Toutes les idées seraient les bienvenues!

MISE À JOUR: Je suis également en semblable problems avec CSS

+0

Avez-vous essayé d'autres navigateurs que IE8 ou une approche CSS? – Robert

+0

est-ce que document.body.style.cursor = 'hand' fonctionne avec IE? Pas que je recommande cela - juste essayer des idées. – DaveHogan

+0

J'ai essayé Firefox sur le serveur de test et il montre le pointeur (main) correctement. – GernBlandston

Répondre

1

réponse a été trouvée here

« Lorsque IE rend sur localhost, il utilisera le mode conforme à la norme.

Cependant, quand il rend sur un intranet, il utilisera le mode de compatibilité.

Don Ne me demandez pas pourquoi ça fait ça, c'est juste une de ces choses MS arbitraires pour pimenter notre vie de développeur

Ajoutez simplement ceci à votre en-tête pour forcer IE en mode conforme standard:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />" 
+0

Vous pourriez marquer ceci comme la réponse acceptée. –

0

Do it avec CSS:

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

OU

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

Si vous ne possédez pas les classes nécessaires, vous pouvez essayez de les définir avec quelque chose comme jQuery: $("selector").addClass("row"); Vous pouvez également filter() avec une fonction personnalisée ou travailler avec chaque section individuellement si nécessaire:

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

Notez que l'exemple ci-dessus est à titre indicatif seulement.

+0

Je trouve que j'ai un problème similaire avec CSS: http://stackoverflow.com/questions/3770103/ie-displays-page-differently-between-debug-in-visual-studio-and-on-the- serveur – GernBlandston

0

Vous devez placer le curseur sur le niveau de la cellule et non sur le niveau du document.

Vous ne savez pas pourquoi vous définissez le curseur avec JavaScript en premier lieu lorsque vous pouvez simplement le définir dans le fichier CSS pour les tds en question.

+0

Mais pourquoi cela fonctionne-t-il dans Debug, mais pas sur le serveur publié? – GernBlandston

Questions connexes