2013-11-23 37 views
3

我想在加載頁面時使用userscript自動點擊按鈕。
目標網頁的HTML(我不控制)看起來是這樣的:如何模擬鼠標點擊沒有href的<a>標籤?

<a id="signInBtn" alog-alias="qb-signin-btn" class="signInBefore btn btn-24-white grid" data-disabled="false" hidefocus="hidefocus"> 
    <em><b>CheckIn</b></em> 
</a> 

這是沒有href屬性的奇怪鏈接。我想使用此代碼:

var btn = $("a#signInBtn"); 
btn.trigger("click"); 

但Chrome的控制檯使我這個:

Error in event handler for (unknown):
Error: Syntax error, unrecognized expression: a[href^=/i?]

如何將我的userscript點擊這個按鈕?

+1

'了'標籤缺少屬性'href'。而且你不能叫'.trigger(「點擊」);'因爲你已經不是一個'定義點擊事件處理'標籤。 –

+1

你可以附加一個無用的'href'像'javascript:void(0)'到鏈接嗎?另外,'#a signInBtn「是多餘的,因爲ID必須是唯一的;只需使用'「#signInBtn」'代替。 – mc10

+0

@TusharGupta我不確定。我不熟悉javascript和html。我不知道爲什麼這個標籤缺少href。 – einverne

回答

1

jQuery .trigger()大多隻適用於jQuery設置的事件。並且,在這種情況下,它必須使用目標頁面的jQuery實例調用,而不是 userscript的實例。 (另外,您的腳本如何使用jQuery?錯誤的方法可能會破壞頁面,腳本或兩者)。

可能還有其他需要和/或AJAX進行抗衡的事件,我們無法從您的題。請參閱Choosing and activating the right controls on an AJAX-driven site

對節點和觸發鼠標事件的輪詢幾乎適用於所有情況。下面是一個完整userscript讓你開始:

// ==UserScript== 
// @name  _Auto-click the sign-in link 
// @include http://YOUR_SERVER.COM/YOUR_PATH/* 
// @grant GM_addStyle 
// ==/UserScript== 

var signInTimer = setInterval (function() { 
     var signInBtn = document.querySelector ("#signInBtn"); 
     if (signInBtn) { 
      clearInterval (signInTimer); 

      var clickEvent = document.createEvent ('MouseEvents'); 
      clickEvent.initEvent ('click', true, true); 
      signInBtn.dispatchEvent (clickEvent); 
     } 
    } 
    , 200 
);