這裏是一個完整的腳本是這樣做的。它使用jQuery的the :contains() selector。
更新:修改後的腳本來說明報告的AJAX。
// ==UserScript==
// @name _Click on a specific link
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a major design change
introduced in GM 1.0.
It restores the sandbox.
*/
//--- Note that contains() is CASE-SENSITIVE.
waitForKeyElements ("a.simplebutton:contains('follow')", clickOnFollowButton);
function clickOnFollowButton (jNode) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
jNode[0].dispatchEvent (clickEvent);
}
注:在某些情況下,項會錯誤地觸發。例如,如果有<a class="simplebutton">unfollow</a>
按鈕。
以下是防止錯誤點擊的方法。修改clickOnFollowButton
功能,像這樣:
function clickOnFollowButton (jNode) {
if (! /^\s*follow\s*$/i.test (jNode.text())) {
/*--- If the node contains anything but "follow" (surrounded by
optional whitespace), don't click it.
*/
return false;
}
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
jNode[0].dispatchEvent (clickEvent);
}
幾件事情:
getElementsByClassName()
返回一個列表或元素的 「收藏」。你不能只是.submit()
這樣的結果。 .submit()
適用於單個元素。
由於這是一個鏈接.submit()
將無法正常工作。 .click()
通常會工作,但通常不會 - 當一個鏈接被一個事件監聽器授權時(這個問題肯定是這種情況)。
上面給出的代碼clickEvent
幾乎適用於所有情況。
The page code you gave沒有任何鏈接,其中class="simplebutton"
和文本包含find
!
您使用的是什麼瀏覽器?哪個Greasemonkey版本?什麼操作系統?
查找並使用適當的javascript引用和適當的DOM引用。問題中列出的參考文獻是庫,它不是標準的,並且不包含在腳本中(很可能)。
使用CSS路徑,其比XPATH容易得多,對於這種事情。 Firebug會顯示給定元素的CSS路徑。
jQuery使用CSS選擇器/路徑,document.querySelector()
(非jQuery方法)也是如此。
感謝您的努力!我真的很感激。可悲的是你的代碼不能按預期工作。當然,這是我的錯,因爲我不是專家,所以我給了錯誤的信息。在我看來,我想點擊的按鈕在加載初始頁面後加載,所以通用汽車無法識別它。 如果你有一個instagram帳戶,你可以登錄這個網站:http://ink361.com,我想要點擊關注按鈕。 – KingBOB
這是一個很大的疏忽。你可能應該贊同兩個答案來彌補。無論如何,我沒有Instagram帳戶,但是我已將腳本更改爲與AJAX一起使用的位置。無論該按鈕何時出現,它都會啓動。只要確保它是「遵循」而不是「遵守」(案件對此非常重要)。 –
感謝您的支持人!現在它按預期工作:對不起,如果我的問題不完整,應該是! – KingBOB