2010-09-27 45 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] 

每個按鈕的值是接受和播放。

所以。有沒有辦法讓它點擊名稱中具有特定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]"> 
+0

hmmmmmmmmmmm ... – 2010-09-27 23:56:18

+0

嗨,邁克爾。我不明白你的意思。 – Francisc 2010-09-28 01:25:01

+0

有一頁上有一堆按鈕。我需要獲得一個JavaScript書籤,它將根據名稱點擊特定的按鈕。 – Seatbelt99 2010-09-28 02:04:00

回答

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

然後在提示符中粘貼完整的名稱屬性?我這樣做了,但是即使我從頁面的源代碼中直接粘貼了它,也沒有找到。 – Seatbelt99 2010-09-29 15:15:51

+0

@Seatbelt你無法直接從頁面源代碼中粘貼它。爲什麼?因爲在頁面中, URL是一個標記屬性,因此某些字符必須被編碼(比如'&'變成'&'),以便他們能夠在標記中工作。他們需要解碼才能在JavaScript中工作。答案將很快更新。 – 2010-09-29 15:20:46

+0

@ Seat皮帶查看最新更新 – 2010-09-29 15:28:24

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網址或類似內容的元素會更好嗎?在這種情況下,腳本將具有更大的靈活性。

+0

網址每次都會改變,但我可以讓我的腳本插入到這個網址,如果它的作品。這裏是我嘗試... 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 2010-09-29 15:12:27

-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進行Web開發的許多有用提示。 – user435657 2010-09-29 15:28:02

+0

他沒有提到有關jQuery的任何信息。 Bookmarklet應該是簡約而不是臃腫的。 – 2010-09-29 15:29:53

+0

我從來沒有用JQuery做過任何事情,所以我不知道我會如何處理這些信息。它可以被放入類似的東西作爲一個JavaScript書籤? – Seatbelt99 2010-09-29 15:32:13