是否有任何方法可以讓我檢測按鈕點擊是由真實用戶執行的,而不是用戶加載到其瀏覽器開發者的一些自動方法(javascript)控制檯或其他瀏覽器開發工具?檢測按鈕是否點擊真實用戶或由腳本觸發
我嘗試了以下方法建議在各種計算器的帖子,但他們都沒有出現工作。 REF:How to detect if a click() is a mouse click or triggered by some code?
腳本檢測方法嘗試和失敗:
mybutton.click(function (e) {
if (!e.which) {
//Triggered by code NOT Actually clicked
alert(' e.which - not a real button click')
} else if ('isTrusted' in e && !e.isTrsuted) {
//Triggered by code NOT Actually clicked
alert(' e.isTrusted - not a real button click')
} else if (e.originalEvent === undefined) {
//Triggered by code NOT Actually clicked
alert(' e.originalEvent - not a realbutton click')
}
// else if (!e.focus) {
// //triggered // does not detect e.focus on a real btn click
// alert(' e.focus - not a realbutton click')
// }
else {
// Button hopefully clicked by a real user and not a script
}
})
如果我運行下面的腳本來觸發從Chrome瀏覽器控制檯上面這些都不是陷阱它的方法,按一下按鈕作爲被一個觸發腳本。
var button = document.getElementById("btnSubmit");
button.click();
=========================================== ===============================
謝謝你所有的回覆,並感謝提供這樣一個偉大的計算器該網站有助於實現這麼多的知識共享,併爲我們節省了無數個小時的技術人員。
看來我還沒有可靠的方法。所有3種瀏覽器(FF,IE & Chrome)均爲用戶提供開發者/控制檯界面,以在我的網頁上運行/注入JavaScript。看起來,每個瀏覽器的味道都會稍微區別一些事件屬性值。例如:Chrome將腳本激活的cick和真實用戶之間的差異用e.screenX捕捉,但在IE中:e.screenX對腳本單擊(合成)和用戶按鈕單擊具有相同的值點擊
以下檢測方法根本不起作用或在不同瀏覽器中不一致:e.isTrsuted e.originalEvent(event.source!= window)(e.distance!= null)
mousedown事件顯示爲只能由一個真正的用戶按鈕點擊觸發,但我必須假設除了點擊按鈕事件之外,還有一些腳本方法來模擬mousedown。 (五){alert('mouseisdown真正的按鈕點擊'); }
如果任何人都可以找出一種在多個瀏覽器上工作的可靠方法,它可以檢測合成(腳本)按鈕點擊和用戶點擊按鈕之間的區別,您將擁有超級英雄狀態。
截至目前,我看不到一個公認的答案。更糟糕的是,我不會接受。 – 2016-01-21 16:28:36
對於firefox e.isTrusted的作品,不知道別人。 ** e.isTrsuted **不起作用;-) – 2016-02-07 15:34:27