Le seul qui vraiment m'arrive:
Si vous êtes intéressés par les questions elles-mêmes, QuirksMode.org est une ressource incroyable, j'ai utilisé tous les jours avant de faire le saut à côté client bibliothèques. Consultez également John Resig est Le DOM est un Gâchis présentation à yahoo, qui donne beaucoup de théorie sur la façon de traiter avec la croix-navigateur sujets de manière efficace.
Toutefois, si vous êtes intéressé, il suffit d'avoir résolus, votre question est un excellent exemple de pourquoi de nombreux envisager d'utiliser côté client bibliothèques comme jQuery, YahooUI, MooTools, Dojo, etc. Avec l'essor d'une communauté, les personnes de talent et le soutien d'une société de projets comme ceux-ci vous permettent de vous concentrer sur votre application plutôt que sur ces questions.
Voici quelques jQuery exemples qui permettent d'éviter une grande partie de la croix-navigateur de frustration et peut vraiment faire tout cela ... amusant.
Croix-navigateur de la souris cliquez sur la liaison
$('#select anything + you[want=using] ~ css:selectors').click(
function(){
alert('hi');
}
);
Croix-navigateur HTML Injection
$('#anElementWithThisId').html('<span>anything you want</span>');
Croix-navigateur Ajax (tous les objets de requête sont toujours disponibles pour vous)
$('p.message').load('/folder/file.html');
Et ce souffle vraiment de moi, de charger un sous-ensemble de données avec les sélecteurs (voir le manuel pour plus de détails)
$('p.message').load('/folder/file.html body p:first-child');
Maintenant, comment tout cela commence vraiment à s'amuser: le chaînage des méthodes
$('ul.menu a').click( // bind click event to all matched objects
function(evt){ // stnd event object is the first parameter
evt.preventDefault(); // method is cross-browser thx to jquery
$(this) // this = the clicked 'a' tag, like raw js
.addClass('selected') // add a 'selected' css class to it
.closest('ul.menu') // climb the dom tree back up to the ul
.find('a.selected') // find any existing selected dom children
.not(this) // filter out this element from matches
.removeClass('selected'); // remove 'selected' css class
}
)
Cela me rappelle Joël Pouvez Votre Langage de Programmation le Faire? l'article.
En prenant tout cela à un niveau théorique, le véritable progrès ne vient pas de ce que vous pouvez faire avec la pensée consciente et de l'effort, mais plutôt ce que vous pouvez faire automatiquement (sans pensée ou d'effort). Joel a un segment sur cette Puce Et Fait bouger les Choses concernant les questions d'entrevue et smart développeurs, complètement changé mon approche de la programmation.
Semblable à un pianiste qui peuvent "jouer" de la musique parce qu'elle sait toutes les clés, votre promotion ne vient pas de faire plus de choses qui demandent de la réflexion, mais plutôt plus de choses qui ne nécessitent pas de pensée. L'objectif devient alors de faire toutes les bases facile.. naturel.. subconscient.. afin que nous puissions tous geek sur notre niveau plus élevé objectifs.
Côté Client, les bibliothèques, dans un sens, nous aider à faire exactement cela. ;)