2010-09-27 2 views
1

Мне нужен ярлык javascript, который можно щелкнуть по кнопке. Дело в том, что на странице есть еще 100 кнопок с одинаковым значением. Название уникально, но довольно долго.
Полное имя элемента что-то вроде:Ярлык Javascript, чтобы нажать кнопку, найденную по уникальному имени

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] 

Значение каждой кнопки есть Accept и Play.

So. Есть ли способ щелкнуть по кнопке с определенным URL-адресом в названии?

Вот источник информации для одной из кнопок (получил от этого инспектировать функции элемента Хрома):

<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

Hi, Michael. Я не понимаю, что вы имеете в виду. – Francisc

+0

На нем есть страница с кучей кнопок. Мне нужно получить букмарклет javascript, который нажмет на определенную кнопку на основе имени. – Seatbelt99

ответ

1

Это должно сделать это ...

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(); 

Он основан на getElementsByName, здесь это все прописано ...

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

, затем в подсказке я вставляю all name attribute? Я сделал это, и он сказал, что не найден, хотя я вставил его прямо из источника страницы. – Seatbelt99

+0

@Seatbelt Вы не можете вставить его прямо из источника страницы. Почему? Потому что на странице URL-адрес - это атрибут разметки, поэтому определенные символы должны быть закодированы (например, '&' становиться '&'), чтобы они работали в разметке. Их нужно будет расшифровать, чтобы работать в Javascript. . –

+0

@Seat пояса Посмотреть последнее обновление –

0

Вот грубый пример того, что вы можете сделать.

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 
} 

если URL будет меняться каждый раз, вы можете найти то образом заполнить переменную url, и использовать его для создания имени элемента. В этом примере предполагается, что элемент является единственным на странице с этим точным атрибутом name.

Этот пример довольно жесткий и может не работать как ваш букмарклет, если вам нужно взаимодействовать с ним. Как выглядят другие элементы? Было бы лучше искать элемент, указывающий на URL-адрес giftaccept или что-то в этом роде? Сценарий будет иметь гораздо большую гибкость в подобной ситуации.

+0

url действительно меняется каждый раз, но я могу сделать свой скрипт вставить этот url в это, если он работает. Вот что я пробовал ... javascript: (function() {var url = 'REALLY LONG URL HERE'; var searchName - 'actions [' + url + ']'; var items = document.getElementsByName (searchName); if (items.length> 0) {var myButton = items [0]; myButton.click(); И что не работает, что-нибудь, что вы можете видеть, что я делаю неправильно? – Seatbelt99

-1

Для удобства и совместимости использование 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

Для получения дополнительной информации или вы хотите реализовать подобный, просто просмотрите исходный код JQuery, и вы найдете много полезных советов для веб-разработки с использованием Javascript. – user435657

+0

Он ничего не сказал о jQuery. Закладки должны быть минималистичными, а не раздутыми. –

+0

Я никогда ничего не делал с JQuery, поэтому я не уверен, что бы я сделал с этой информацией. Может ли это быть помещено в аналогичную букву букв javascript? – Seatbelt99