Tampermonkey .click() 不工作
Tampermonkey .click() not working
我试图在 tampermonkey 中自动点击一个按钮,但由于某种原因代码没有执行。不过,如果我将代码放在控制台中并 运行 它,它工作正常。
这里是:
$(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> </i></td><td class="x-btn-tc"></td><td class="x-btn-tr"><i> </i></td></tr><tr><td class="x-btn-ml"><i> </i></td><td class="x-btn-mc"><em class=" x-unselectable" unselectable="on"><button class=" x-btn-text" id="ext-gen147" type="button"> </button></em></td><td class="x-btn-mr"><i> </i></td></tr><tr><td class="x-btn-bl"><i> </i></td><td class="x-btn-bc"></td><td class="x-btn-br"><i> </i></td></tr></tbody></table>
按钮没有动态切换,尝试在功能 运行s 时发出警报,但没有提醒我。
鉴于您的代码:
1. $(document).ready(function() {
2. path = window.location.pathname;
3. setTimeout(autoTraderReady, 10);
4. $('#VehicleApplyButton').click();
5. });
并且根据您在下面的评论,点击第 4 行预计会触发从文档其他地方的 .click
侦听器发出的 AJAX 请求。如果这个侦听器存在于外部脚本中,我怀疑另一个侦听器没有及时捕捉到您触发的点击事件。也就是说,它会在您的点击触发后 开始监听。
$(document).ready
只等待 DOM 加载,不等待外部脚本;尝试将第 1 行更改为 $(window).on('load', function(){...});
。
如果失败,请尝试添加以下调试行:
1. $(document).ready(function() {
2. console.log( $('#VehicleApplyButton') );
3. $('#VehicleApplyButton').click(function(e){ console.log( e ) } );
4. $('#VehicleApplyButton').click();
5. });
第 2 行 - 确认#VehicleApplyButton 存在
第 3 行 - 确认点击事件正在传播
注意:我的初稿忽略了 jQuery
将 .click()
解释为没有参数的 .trigger('click')
的快捷方式,而不是监听器 .on('click',[data],handler)
有 1-2 个参数。感谢礼貌的更正,@robertklep。
对我来说,这与我触发事件的特定页面有关。
jQuery.click() 和普通的 elem.click() 都不起作用。
我解决了像这样创建 MouseEvent 的变通方法:
let btn = document.querySelector('.submitButton');
let clickEvent = new MouseEvent("click", {
bubbles: true,
cancelable: true,
clientX: 150,
clientY: 150
});
btn.dispatchEvent(clickEvent);
所以也许这对您来说也与 EventBubbling 有关。
我试图在 tampermonkey 中自动点击一个按钮,但由于某种原因代码没有执行。不过,如果我将代码放在控制台中并 运行 它,它工作正常。
这里是:
$(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> </i></td><td class="x-btn-tc"></td><td class="x-btn-tr"><i> </i></td></tr><tr><td class="x-btn-ml"><i> </i></td><td class="x-btn-mc"><em class=" x-unselectable" unselectable="on"><button class=" x-btn-text" id="ext-gen147" type="button"> </button></em></td><td class="x-btn-mr"><i> </i></td></tr><tr><td class="x-btn-bl"><i> </i></td><td class="x-btn-bc"></td><td class="x-btn-br"><i> </i></td></tr></tbody></table>
按钮没有动态切换,尝试在功能 运行s 时发出警报,但没有提醒我。
鉴于您的代码:
1. $(document).ready(function() {
2. path = window.location.pathname;
3. setTimeout(autoTraderReady, 10);
4. $('#VehicleApplyButton').click();
5. });
并且根据您在下面的评论,点击第 4 行预计会触发从文档其他地方的 .click
侦听器发出的 AJAX 请求。如果这个侦听器存在于外部脚本中,我怀疑另一个侦听器没有及时捕捉到您触发的点击事件。也就是说,它会在您的点击触发后 开始监听。
$(document).ready
只等待 DOM 加载,不等待外部脚本;尝试将第 1 行更改为 $(window).on('load', function(){...});
。
如果失败,请尝试添加以下调试行:
1. $(document).ready(function() {
2. console.log( $('#VehicleApplyButton') );
3. $('#VehicleApplyButton').click(function(e){ console.log( e ) } );
4. $('#VehicleApplyButton').click();
5. });
第 2 行 - 确认#VehicleApplyButton 存在
第 3 行 - 确认点击事件正在传播
注意:我的初稿忽略了 jQuery
将 .click()
解释为没有参数的 .trigger('click')
的快捷方式,而不是监听器 .on('click',[data],handler)
有 1-2 个参数。感谢礼貌的更正,@robertklep。
对我来说,这与我触发事件的特定页面有关。
jQuery.click() 和普通的 elem.click() 都不起作用。 我解决了像这样创建 MouseEvent 的变通方法:
let btn = document.querySelector('.submitButton');
let clickEvent = new MouseEvent("click", {
bubbles: true,
cancelable: true,
clientX: 150,
clientY: 150
});
btn.dispatchEvent(clickEvent);
所以也许这对您来说也与 EventBubbling 有关。