2010-04-13 25 views
1

J'ai besoin d'un moyen de navigateur croisé de capturer le clic droit de la souris, en empêchant le menu contextuel par défaut et en le faisant où lorsque l'utilisateur traîne la souris, ils peuvent faire un panoramique du contenu d'un div. Ceci est en grande partie similaire à Google maps en ce sens qu'ils vont saisir le contenu et faire glisser pour voir ce qu'ils veulent.Comment faire un panoramique du contenu d'une div lorsque le bouton droit de la souris est déplacé?

Aucune bibliothèque externe s'il vous plaît.

Je capture déjà les événements, et sachez que cela empêchera les actions par défaut:

if (evt.preventDefault) 
{ 
     evt.preventDefault(); 
} 
    else 
{ 
     evt.returnValue = false; 
} 

Mais cela ne l'empêche pas le menu contextuel AFAIK.

Éditer: Je ne sais vraiment pas comment empêcher le menu contextuel et quelle serait la meilleure façon de manipuler les barres de défilement? les exemples seraient grands

+0

Que signifie « pan »? –

+0

@Robert Harvey, par exemple lorsque vous déplacez la carte dans Google Maps, cela s'appelle le panoramique. –

+0

@ Robert Harvey, oui, comme Tatu a dit, je veux que les utilisateurs soient en mesure de maintenir le bouton droit de la souris et par rapport à où ils le bougent tout en appuyant sur ils peuvent naviguer le contenu – Shaunwithanau

Répondre

0

Je suis en utilisant oncontextmenu = « return false » que je sais peut être supplantée par préférence des utilisateurs, mais pour les gens qu'ils peuvent utiliser les options de la barre de menu en haut de mon application.

Pour gérer le défilement Je suis juste en train de modifier div.scrollLeft et div.scrollTop

1

Ce tutoriel sur le défilement parallaxe de la barre de défilement pourrait être utile;

http://inner.geek.nz/javascript/parallax/

+0

Je n'ai pas besoin que les choses tournent à des vitesses différentes, mais cela semble utile pour la deuxième partie de ma question. Il semble que le rapport de vitesse est juste une question d'essai et d'erreur jusqu'à ce que vous trouviez ce qui fonctionne? – Shaunwithanau

+1

Votre autre commentaire rend les choses plus claires; J'imaginais un panoramique plutôt qu'un effet gmaps. Je dirais 1: 1 mouvement de la souris pour div pan, mais si la div est petite, alors une vitesse de panoramique plus rapide pourrait être plus gentil avec vos utilisateurs. Si l'utilisateur «saisit» et tire le contenu (comme gmaps) alors un rapport de 1: 1 a un sens à partir d'une perspective d'interface utilisateur, car il simule l'acte physique de pousser le contenu sur une table. – Mathew

+0

J'ai vérifié et il est "préhension" plutôt que par rapport au point fixe où ils ont initialement cliqué que je suis en train de reproduire. Donc, 1: 1 a un sens. Je suppose que la chose la plus simple est d'utiliser simplement ScrollBy()? Est-ce un navigateur croisé? – Shaunwithanau