2009-11-10 6 views
1

Je suis en train de créer un navigateur de fichiers Web très simple pour mon site Web. J'ai créé mes liens pour qu'ils ressemblent à des fichiers et je veux être en mesure de les sélectionner pour que je puisse faire des choses comme renommer etc., et je veux pouvoir double-cliquer pour activer le lier et télécharger le fichier.Activer un lien sur double clic uniquement

Je suis venu avec ce qui suit, mais il semble moche. Est-ce que quelqu'un a une solution plus élégante?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Untitled Document</title> 

<script type="text/javascript"> 

function nullClick() 
{ 
    //do select stuff 
    return false; 
} 

function dolink(link) 
{ 
    window.location(link.href); 
} 

</script> 

</head> 

<body> 

<a href="http://pathtofile" onclick="return nullClick();" ondblclick="dolink(this);">Clicky</a> 

</body> 
</html> 
+2

Il ressemble à une approche raisonnable ... Que vous pas satisfait? – jheddings

+0

c'était le 'dolink (this)' et 'window.location = ...' qui se sentait maladroit quand le lien fonctionne si bien dans sa forme non-molestée. Je peux juste le retravailler pour «améliorer progressivement», le système affiche déjà une nouvelle page avec des options de renommer/supprimer etc pour chaque fichier, je voulais juste le jazzer un peu. – MalphasWats

+1

Le seul commentaire que j'offre serait que les gens s'attendent à ce que les liens fonctionnent ... Tant que vous le stylisez de manière à ne pas trop dérouter les gens, je pense que c'est une bonne approche. Si vous avez un cadre pour vous aider, il peut vous aider à éliminer le «fouillis» de votre code HTML. – jheddings

Répondre

4

J'éviter de le faire, car il va à l'encontre comment les utilisateurs devraient web SITUER à la fonction, mais si vous devez, comme vous le faites est la seule façon que je connaisse.

De plus, vous devriez savoir que le site se rabattra sur les liens à simple clic si le javascript est désactivé ou indisponible.

+1

Je suis d'accord, le site est vraiment seulement pour mon usage personnel, et la méthode 'nullClick' recadrerait le lien pour qu'il apparaisse 'sélectionné'. – MalphasWats

+0

Il a besoin de plus que juste ignorer le onclick, donc la fonction nullClick() a du sens dans l'exemple. Lire la question à nouveau - "Je veux être en mesure de faire un simple clic pour les sélectionner afin que je puisse faire des choses comme renommer etc" –

+0

Je vois, puis ignorer mon commentaire précédent sur la suppression de la fonction. J'ai édité ma réponse. –

2
<a href="http://pathtofile" onclick="return false" ondblclick="window.location = 'some where'">Clicky</a> 

Je pense que ce serait une solution plus élégante avec une ligne de code.

0

Si vous n'utilisez aucun framework JavaScript, c'est probablement aussi bon que possible. Tu pourrais te débarrasser de tes fonctions toi;

<a href="..." onclick="return false;" ondblclick="location.href='...';">Foobar</a> 
1

Si vous n'êtes pas contre un peu jQuery:

$("#yourLinkId").dblclick(function() { 
     window.location($(this).attr("href")); 
    }); 
+0

pas un fan de jQuery, se sent trop comme la triche :) – MalphasWats

+0

Je sais ce que tu veux dire, mais après l'avoir utilisé pendant cinq minutes, j'ai été vendu :) – Thomas

+1

Pourquoi ne pas tricher quand vous le pouvez? –

1

Comment l'utilisation jQuery?

exemple HTML:

<a href="javascript:alert('link1')" class="dblclick">link1</a><br> 
<a href="javascript:alert('link2')" class="dblclick">link2</a><br> 
<a href="javascript:alert('link3')" class="dblclick">link3</a><br> 

exemple jQuery:

$('a.dblclick') 
    .bind('click', function() { return false; }) 
    .bind('dblclick', function() { window.location = this.href; }); 

SSCCE:

<!doctype html> 
<html lang="en"> 
    <head> 
     <title>Test</title> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(init); 
      function init() { 
       $('a.dblclick') 
        .bind('click', function() { return false; }) 
        .bind('dblclick', function() { window.location = this.href; }); 
      } 
     </script> 
    </head> 
    <body> 
     <a href="javascript:alert('link1')" class="dblclick">link1</a><br> 
     <a href="javascript:alert('link2')" class="dblclick">link2</a><br> 
     <a href="javascript:alert('link3')" class="dblclick">link3</a><br> 
    </body> 
</html> 
Questions connexes