Javascript bookmarklet, чтобы нажать кнопку, найденную по уникальному имени - PullRequest
1 голос
/ 28 сентября 2010

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

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]

Значение каждой кнопки - Принять и Играть.

Так. Есть ли способ заставить его нажать на кнопку с определенным URL в имени?

Вот источник информации для одной из кнопок (полученный из функции проверки элемента 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]">

Ответы [ 3 ]

1 голос
/ 29 сентября 2010

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

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 голосов
/ 29 сентября 2010
0 голосов
/ 29 сентября 2010

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

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 или что-то в этом роде?Сценарий будет иметь гораздо больше гибкости в такой ситуации.

...