2010-10-14 7 views
1

Questionrafraîchir hijack clé

Comment écraser-vous la clé de rafraîchissement avec une fonction personnalisée javascript? J'utilise la bibliothèque Prototype, d'ailleurs.

Pourquoi

J'ai une vidéo avec les commentaires des utilisateurs sur le côté. Il y a un bouton pour seulement rafraîchir les commentaires via une fonction JS updateComments(). Lors de certains tests utilisateur, certains idiots ont refusé d'utiliser ce bouton pour mettre à jour les commentaires. Au contraire, ils ont rafraîchi toute la page. Cela provoque le redémarrage de la vidéo, ce qui n'est pas souhaitable. Je voudrais remplacer la touche F5 ou CTRL + R pour appeler updateComments() au lieu d'actualiser la page.

+3

Vous ne pouvez pas faire cela. Eh bien, vous * pourriez * être en mesure d'attraper les clés, mais vous ne pouvez pas désactiver le bouton du navigateur (au moins, pas de manière fiable). – Pointy

+1

Vous ne pouvez pas non plus désactiver l'élément de menu pour actualiser/recharger, ou une combinaison de touches bizarre sur le Firefox totalement personnalisé et remappé de mon ami. Il suffit de retirer les ordinateurs de ces peuples s'ils ne peuvent pas apprendre. L'actualisation de la page entière redémarre la vidéo sur tous les sites que j'ai visités, pas seulement les vôtres. –

Répondre

1

Vous ne seriez pas en mesure de désactiver les boutons du navigateur et cela serait contraire à l'expérience générale de l'interface utilisateur. Une possibilité serait de vérifier comment la page est chargée et d'afficher un «S'il vous plaît ne faites pas cela pour charger les commentaires» à l'utilisateur. Par exemple, dans Google Chrome, vous pouvez vérifier si la page a été rechargées:

if (chrome.loadTimes().navigationType === 'Reload') { 
    alert('Please reload comments using the magic button'); 
} 

Je ne suis pas certain si les autres navigateurs ont des fonctions similaires disponibles mais je doute que cela dans beaucoup. Généralement cependant, mon conseil dans ce cas serait de changer la façon dont vous chargez les commentaires. Par exemple, une recherche sur Twitter vérifie périodiquement les nouveaux tweets, puis affiche un bouton «Afficher X autres tweets» sur lequel l'utilisateur peut appuyer pour les afficher.

1

Je pense que le mieux que vous puissiez faire est d'ajouter un gestionnaire à l'événement window.onbeforeunload.

Quelque chose comme ceci:

function beforeUnload() { 
    if (videoIsPlaying) { 
     return "Are you sure you want to stop the video?"; 
    } 
} 
window.onbeforeunload = beforeUnload; 

Jetez un oeil à des exemples here et here