簡體   English   中英

jQuery click()觸發HTML的OnClick屬性

[英]jQuery click() to trigger HTML's OnClick property

我有(有?)這個Greasemonkey腳本,它使用了很多jQuery在Web表單中設置一些默認值。 該Web表單是HP無線網絡控制器提供的,因此我認為我無法修改正在生成的HTML。

腳本運行得很好,直到出現Firefox更新。 現在,所有jQuery click()和dblclick()調用均無法正常工作。 他們拋出異常:

Permission denied to access property 'length'

我要“點擊”的HTML是:

<input id="plan_selection-1" type="radio" onclick="UpdateSectionStates();" value="valid_time" name="plan_selection">

我正在使用jQuery單擊:

$('#plan_selection-1').trigger("click");

我嘗試了一些不同的操作(使用.click(),我收集的內容與.trigger(“ click”)相同,如jQuery click()所述,發送了一個實際的鼠標事件, 在Greasemonkey / Tampermonkey腳本中不起作用 ,但是,這失敗了,因為dispatchEvent()“不是函數”。

直到幾周前,它一直在工作,但是我沒有回過頭來了解FF的最新版本是什么。

任何方向或幫助表示贊賞。

有兩個解決此問題的方法。

您可以嘗試查看點擊事件是否適用於純JS

 document.getElementById("plan_selection-1").click();

否則,如果您只想將元素設置為selected並調用函數...

document.getElementById("plan_selection-1").checked = true;
UpdateSectionStates();

您可能希望通過檢查選擇器是否返回元素來測試JQuery是否在正常工作。

您是否嘗試過手動調度事件,即純js

var input = $('#plan_selection-1')[0];
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 80, 20, false, false, false, false, 0, null);
input.dispatchEvent(evt);

說明:這是在純js中觸發事件的方式。 同樣,您也不需要重新創建鼠標事件,可以多次將相同的事件分派給不同的元素,因此,如果$('#plan_selection-1').trigger("click") ,您可以創建一個鼠標事件,只需替換每個$('#plan_selection-1').trigger("click")$('#plan_selection-1')[0].dispatchEvent(evt) ,以使您的代碼正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM