Javascript bookmarklet,用于单击按唯一名称找到的按钮

时间:2010-09-27 23:53:23

标签: javascript bookmarklet

我需要一个可以点击按钮的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的inspect元素功能中获取):

<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 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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属性的元素。

此示例非常严格,如果您需要与其进行交互,则可能无法用作书签。其他元素是什么样的?寻找指向giftaccept网址或类似内容的元素会更好吗?在这样的情况下,脚本会有更多的灵活性。

答案 2 :(得分:0)

为方便和兼容,请使用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()