2016-08-27 2 views
0

Ich versuche in Tampermonkey automatisch auf eine Schaltfläche zu klicken, aber aus irgendeinem Grund wird der Code nicht ausgeführt. Wenn ich jedoch den Code in die Konsole lege und ihn ausführe, funktioniert es gut.Tampermonkey .click() funktioniert nicht

Hier ist sie:

$(document).ready(function() { 
    path = window.location.pathname; 
    setTimeout(autoTraderReady, 10); 
    $('#VehicleApplyButton').click(); 
}); 
<table id="VehicleApplyButton" class="x-btn va-apply-button x-btn-noicon x-column" cellspacing="0"><tbody class="x-btn-small x-btn-icon-small-left"><tr><td class="x-btn-tl"><i>&nbsp;</i></td><td class="x-btn-tc"></td><td class="x-btn-tr"><i>&nbsp;</i></td></tr><tr><td class="x-btn-ml"><i>&nbsp;</i></td><td class="x-btn-mc"><em class=" x-unselectable" unselectable="on"><button class=" x-btn-text" id="ext-gen147" type="button">&nbsp;</button></em></td><td class="x-btn-mr"><i>&nbsp;</i></td></tr><tr><td class="x-btn-bl"><i>&nbsp;</i></td><td class="x-btn-bc"></td><td class="x-btn-br"><i>&nbsp;</i></td></tr></tbody></table> 

Taste schaltet nicht dynamisch, versucht eine Warnung zu tun, wenn die Funktion ausgeführt wird, mich nicht alarmieren.

+0

@wOxxOm i hinzugefügt in einem setTimeout für 5000ms aber es funktioniert noch nicht – TheGuyWhoCodes

+0

@wOxxOm ein wenig mehr Informationen hinzugefügt, nicht sicher, was sonst – TheGuyWhoCodes

+0

Ich denke, das Problem hinzuzufügen ist, dass '# VehicleApplyButton' eine Tabelle , kein Knopf. Es gibt einen Knopf im Tisch. Versuchen Sie es zu klicken: '$ ('# VehicleApplyButton button'). Click();' – wOxxOm

Antwort

2

Given Code:

1. $(document).ready(function() { 
2.  path = window.location.pathname; 
3.  setTimeout(autoTraderReady, 10); 
4.  $('#VehicleApplyButton').click(); 
5. }); 

und basierend auf Ihren Kommentar unten, der Klick auf Linie 4 wird erwartet, dass eine AJAX-Anforderung von einem .click Zuhörer in Ihrem Dokument an anderer Stelle gefeuert auszulösen. Wenn dieser Listener in einem externen Skript vorhanden ist, besteht der Verdacht, dass der andere Listener nicht rechtzeitig verfügbar ist, um das Klickereignis zu erfassen, das Sie auslösen. Das heißt, es beginnt zu hören nach Ihr Klick wurde bereits ausgelöst.

$(document).ready wartet nur auf das Laden des DOM, nicht auf externe Skripts; Versuchen Sie stattdessen, Zeile 1 zu $(window).on('load', function(){...}); zu ändern.

Wenn das fehlschlägt, versuchen Sie folgende Debug-Linien:

1. $(document).ready(function() { 
2.  console.log($('#VehicleApplyButton')); 
3.  $('#VehicleApplyButton').click(function(e){ console.log(e) }); 
4.  $('#VehicleApplyButton').click(); 
5. }); 

Linie 2 - bestätigen #VehicleApplyButton existiert

Linie 3 - bestätigen Click-Ereignis

Hinweis ausbreitet : mein erster Entwurf übersehen, dass jQuery.click() als eine Verknüpfung fürinterpretiertohne Params, anstatt den Hörer .on('click',[data],handler) mit 1-2 Params. Danke für die höfliche Korrektur, @robertklep.

+3

'$ (...). Click()' [ist eine Abkürzung für] (https://api.jquery.com/click/) '$ (...). Trigger ('click')' – robertklep

+0

Danke um zu zeigen, wie 'click' aufgerufen wird, ohne params, @robertklep. Ändere meine Antwort in Kürze. – Cam

+0

Wenn der Benutzer auf #VehicleApplyButton klickt, sendet der Client einige Daten an den Server und der Server antwortet mit JSON. Ich kann wirklich keinen der Parameter für die Client-Anfrage herausfinden. Die anderen Zeilen, über die Sie sprechen, würden das Ergebnis von .click() überhaupt nicht beeinflussen. – TheGuyWhoCodes

Verwandte Themen