2010-09-27 2 views
1

J'ai besoin d'un bookmarklet javascript qui peut cliquer sur un bouton. La chose est, il y a plus de 100 boutons sur la page tous avec la même valeur. Le nom est unique mais assez long.
Le nom complet de l'élément est quelque chose comme:bookmarklet Javascript pour cliquer sur un bouton trouvé par nom unique

actions[http://apps.facebook.com/frontierville/giftaccept.php?next=giftaccept.php&senderId=1%3A1325206719&gh=3a8bfdace76051752a9127d1f9b43872&gift=nails&timestamp=1285598414&ref=tab&key=29b15e06ed9d7c00a8870c955ab938cf%24%24cfH1PUUZ%217bZYhg8M-o-XQc%218HHRMcvvyhuf4d%21.64qEvlQe&src=request&aff=gift&crt=nails&signature=6dd3fa03fe88f98b6dcab4faf4c7da94] 

La valeur de chaque bouton est Accepter et Play.

Donc. Est-il possible de cliquer sur le bouton avec une URL spécifique dans le nom?

est ici la source de l'info pour l'un des boutons (obtenu à partir de cette inspection la fonction de l'élément de chrome):

<input value="Accept and Play" type="submit" name="actions[http://apps.facebook.com/onthefarm/giftaccept.php?senderId=1259413693&amp;gift=mysterygift&amp;timestamp=1285599906&amp;ref=gift_accept_tab&amp;key=78fcc7de3b36b8f9564262fab506893f%24%24ceK5RVRY61bZYhg8M-o-XQcyL%2CzHccEwEeuj4e-%21-dh0AD0A2AgyScd&amp;signature=32db959ce43f8330cf8fd992fbd53a51&amp;srcapp=FarmVille]"> 
+0

hmmmmmmmmmmm ... –

+0

Salut, Michael. Je ne comprends pas ce que tu veux dire. – Francisc

+0

Il y a une page avec un tas de boutons dessus. J'ai besoin d'un bookmarklet javascript qui va cliquer sur un bouton spécifique basé sur le nom. – Seatbelt99

Répondre

1

Cela devrait le faire ...

javascript:var nam=prompt("Give me a URL to look for"); nam="actions["+nam.replace(/\&amp;/g, "&")+"]"; var els=document.getElementsByName(nam); if(els.length == 0) alert("Button not found"); else els[0].click(); 

Il est basé sur getElementsByName, ici il est tout Éliminées ...

var nam = prompt("Give me a URL to look for"); 
nam = "actions[" + nam.replace(/\&amp;/g, "&") + "]"; 
var els = document.getElementsByName(nam); 

if(els.length == 0) 
    alert("Button not found"); 
else 
    els[0].click(); 
+0

puis dans l'invite je colle dans le attribut complet de nom? Je l'ai fait et il a dit non trouvé même si je l'ai collé directement à partir de la source de la page – Seatbelt99

+0

@Seatbelt Vous ne pouvez pas le coller directement à partir de la source de la page. URL est un attribut de balisage, et donc certains caractères doivent être encodés (comme '&' devenant '&') pour qu'ils fonctionnent dans le balisage, ils devront être décodés afin de fonctionner dans le Javascript. –

+0

@Seat ceinture Voir la dernière mise à jour –

0

Voici un exemple grossier de ce que vous pouvez faire.

var url = 'http://reallylong.facebook.url.from.your.example'; 
var searchName = 'actions[' + url + ']'; 

var items = document.getElementsByName(searchName); 

if (items.length > 0) { 
    var myButton = items[0]; // assuming the first item is the correct one 
    myButton.click(); // programmatically click it 
} 

si l'URL va changer chaque fois, vous pouvez trouver someway pour remplir la variable url, et l'utiliser pour générer le nom de l'élément. Cet exemple suppose que cet élément est le seul sur la page avec cet attribut exact name.

Cet exemple est assez rigide et peut ne pas fonctionner en tant que votre bookmarklet si vous avez besoin d'interagir avec lui. À quoi ressemblent les autres éléments? Serait-il préférable de rechercher un élément pointant vers l'URL giftaccept ou quelque chose comme ça? Le script aurait beaucoup plus de flexibilité dans une telle situation.

+0

l'url change à chaque fois mais je peux faire en sorte que mon script insère cette url dans ce si cela fonctionne. Voici ce que j'ai essayé ... javascript: (function() {var url = 'URL REELLEMENT LONGUE ICI'; var searchName - 'actions [' + url + ']'; var items = document.getElementsByName (searchName); (items.length> 0) {var myButton = articles [0]; myButton.click(); Et cela n'a pas fonctionné.tout ce que vous pouvez voir que je me trompe? – Seatbelt99

-1

Pour une utilisation pratique et la compatibilité des sélecteurs de JQuery:

nameVal = 'actions[http://apps.facebook.com/onthefarm/giftaccept.php?senderId=1259413693&amp;gift=mysterygift&amp;timestamp=1285599906&amp;ref=gift_accept_tab&amp;key=78fcc7de3b36b8f9564262fab506893f%24%24ceK5RVRY61bZYhg8M-o-XQcyL%2CzHccEwEeuj4e-%21-dh0AD0A2AgyScd&amp;signature=32db959ce43f8330cf8fd992fbd53a51&amp;srcapp=FarmVille]' 

$("input[value='Accept and Play'][name='" + nameVal + "']").click() 
+0

Pour plus de détails ou si vous souhaitez en implémenter un similaire, passez simplement par le code source JQuery et vous trouverez de nombreux conseils utiles pour le développement web en utilisant Javascript. – user435657

+0

Il n'a rien dit à propos de jQuery. Les signets sont supposés être minimalistes et non pléthoriques. –

+0

Je n'ai jamais rien fait avec JQuery donc je ne suis pas sûr de ce que je ferais de cette information. Peut-il être mis dans une chose similaire à un bookmarklet javascript? – Seatbelt99

Questions connexes