日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript实现按键精灵

發布時間:2024/1/17 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript实现按键精灵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JavaScript實現按鍵精靈

最近有個需求,需要在頁面上面自動點擊、輸入、提交。

用以模擬真實用戶的操作行為,可以通過直接執行某個元素綁定的事件,來執行操作。

也可以創建事件,再派發事件,執行操作。關于事件的更多細節,可以參考《JavaScript中事件處理

1、模擬MouseEvent中的click事件,x與y位置隨機點擊

2、模擬TouchEvent中的touchstart和touchmove,用scroll來做滑動效果

3、模擬FocusEvent,聚焦到屏幕中的輸入框內

?

一、鼠標事件MouseEvent

MouseEvent接口指用戶與指針設備( 如鼠標 )交互時發生的事件。使用此接口的常見事件包括:click,dblclick,mouseup,mousedown。

MouseEvent派生自?UIEvent,UIEvent 派生自?Event

function random(max) {return Math.floor(Math.random() * max); } function on(dom, type, fn) {dom.addEventListener(type, fn, false); } on(document.body, 'click', function(e) {console.log('click事件 x:'+e.clientX, 'y:'+e.clientY); }); /*** MouseEvent* 包括事件 click,dblclick,mouseup,mousedown*/ function mouse() {var x = random(window.outerWidth),y = random(window.outerHeight);var event = new MouseEvent('click', {bubbles: true,cancelable: true,view: window,clientX: x,clientY: y});console.log('click環境 x:'+x, 'y:'+y);document.body.dispatchEvent(event); } mouse();

1)Event

語法如下

typeArg:事件的名字,DOMString類型。

eventInit:

屬性

選項默認類型描述
bubbles可選falseBoolean事件是否冒泡
cancelable可選falseBoolean事件是否可取消
scoped可選?Booleanindicating whether the given event bubbles. If this value is true, deepPath will only contain a target node.
composed可選falseBoolean

事件是否會影子根(shadow root)之外觸發偵聽器。

Shadow DOM是指在文檔(document)渲染時插入一棵DOM元素子樹,但是這棵子樹不在主DOM樹中。

2)UIEvent

語法如下

有多個事件對象直接或間接的繼承了UIEvent,包括:MouseEvent,?TouchEvent,?FocusEvent,?KeyboardEvent,?WheelEvent,?InputEventCompositionEvent

UIEventInit:

屬性

選項默認類型描述
detail可選0long長整型

根據事件不同意義也會不同。

對 click 或者 dblclick 事件, detail是當前點擊數量;

對mousedown或者mouseup事件, detail是1加上當前點擊數;

對所有的其它UIEvent對象, detail總是0。

view可選nullWindowProxy與事件相關聯的窗口

3)MouseEvent

語法如下

mouseEventInit:

屬性

選項默認類型描述
screenX/screenY可選0long長整型

鼠標事件發生時相對于用戶屏幕screen的水平/垂直坐標位置;

該操作并不會改變真實鼠標的位置。

clientX/clientY可選0long長整型

鼠標事件時相對于瀏覽器窗口viewport的水平/垂直坐標位置,不包含滾動距離;

該操作并不會改變真實鼠標的位置。

ctrlKey可選falseBoolean按下了Ctrl鍵
shiftKey可選falseBoolean按下了Shift鍵
altKey可選falseBoolean按下了Alt鍵
metaKey可選falseBoolean按下了Meta鍵?
button可選0short短整型

當事件發生時哪個按鍵被按下或釋放;

0:左鍵 1:中建 2:右鍵

buttons可選0無符號short

當事件發生時哪些按鍵被按下;

0:無按鍵按下 1:左鍵 2:中建 4:右鍵

relatedTarget可選nullEventTarget

標明剛離開的元素 (發生在事件 mouseenter 或 mouseover);

或剛進入的元素 (發生在事件 mouseout 或 mouseleave)。

region可選nullDOMString點擊事件影響的區域DOM的id

?

二、觸屏事件TouchEvent

TouchEvent是一類描述手指在觸摸平面(觸摸屏、觸摸板等)的狀態變化的事件。

每個Touch對象代表一個觸點; 每個觸點都由其位置,大小,形狀,壓力大小,和目標元素描述。TouchList對象代表多個觸點的一個列表。

觸屏touch事件的更多細節,可以參加《觸屏touch事件記錄

on(document.body, 'touchstart', function(e) {var touch = e.touches.item(0);console.log('touchstart x:' + touch.clientX, 'y:' + touch.clientY); }); on(document.body, 'touchmove', function(e) {var touch = e.touches.item(0);console.log('touchmove x:' + touch.clientX, 'y:' + touch.clientY); }); on(document.body, 'touchend', function(e) {var touch = e.changedTouches.item(0);console.log('touchend x:' + touch.clientX, 'y:' + touch.clientY); }); on(window, 'scroll', function(e) {console.log('scroll timestamp:' + e.timeStamp); }); /*** TouchEvent* 包括事件 touchstart,touchend,touchmove,touchcancel*/ function touchstart(x, y, number) {var touch = new Touch({identifier: number,target: document.querySelector('.drag'), //隨便設置的 clientX: x,clientY: y});console.log('touchstart環境 x:' + x, 'y:' + y);var event = new TouchEvent('touchstart', {touches: [touch],targetTouches: [touch],changedTouches: [touch]});document.body.dispatchEvent(event); //touchstart }function touchmove(x, y, interval, number) {var touch = new Touch({identifier: number,target: document.querySelector('.drag'), //隨便設置的 clientX: x,clientY: y + interval});var event = new TouchEvent('touchmove', {touches: [touch],targetTouches: [touch],changedTouches: [touch]});document.body.dispatchEvent(event); //touchmove }function touch() {var x = random(window.outerWidth),y = random(window.outerHeight),number = 1,interval = 10;touchstart(x, y, number);number++;touchmove(x, y, interval, number);number++;interval += 10;touchmove(x, y, interval, number);number++;interval += 10;touchmove(x, y, interval, number);document.body.scrollTop = interval; //自動滾動 } setTimeout(function() {touch(); }, 2000);

1)Touch

語法如下

touchInit:

屬性

選項默認類型描述
identifier必填?long長整型一個觸摸點的數字標記,唯一標識符。
target必填?EventTarget觸點最開始被跟蹤時(在 touchstart 事件中),位于的HTML元素。
clientX/clientY可選0double觸摸點相對于瀏覽器窗口viewport的位置,不包含滾動距離,這個值會根據用戶對可見視區的縮放行為而發生變化。
screenX/screenY可選0double

觸摸點相對于屏幕screen的位置。在IOS中與clientX/clientY屬性不同,不會受到initial-scale的影響;

而在安卓中微信和UC會受之影響,而手機版chrome與紅米note自帶的瀏覽器不會被影響。

pageX/pageY可選0double和clientX/clientY屬性不同,這個值是相對于整個html文檔的坐標,這個值包含了垂直滾動的偏移。
radiusX/radiusY可選0float能夠包圍用戶和觸摸平面的接觸面的最小橢圓的水平軸(X軸)/垂直軸(Y軸)半徑。
rotationAngle可選0float

以度為單位的旋轉角,由radiusX和radiusY描述的正方向的橢圓;

通過順時針旋轉這個角度后,能最精確地覆蓋住用戶和觸摸平面的接觸面的角度。

force可選0float手指擠壓觸摸平面的壓力大小,從0.0(沒有壓力)到1.0(設備可識別的最大壓力)的浮點數。

?2)TouchEvent

語法如下

touchEventInit:

屬性

選項默認類型描述
touches可選[]TouchListTouchList類型(包含了一系列Touch對象的數組),當前位于屏幕上的所有手指的列表。
targetTouches可選[]TouchList與touches類似,但是增加了個過濾條件,要與第一個手指點的地方(同一個節點內)相同。
changedTouches可選[]TouchList

在touchstart中:列出在此次事件中新增加的觸點。如果同時放下一根或兩根手指,那么將與touches相同,但如果先放一根,在放第二根,那就會不同。

在touchmove中:列出和上一次事件相比較,發生了變化的觸點。

在touchend中:列出離開觸摸平面的觸點(這些觸點對應已經不接觸觸摸平面的手指)。

ctrlKey可選falseBoolean按下了Ctrl鍵
shiftKey可選falseBoolean按下了Shift鍵
altKey可選falseBoolean按下了Alt鍵
metaKey可選falseBoolean按下了Meta鍵

?

三、焦點事件FocusEvent

FocusEvent接口表示和焦點相關的事件比如?focus,?blur,?focusin, 和?focusout。

on(document.getElementById('txt'), 'focus', function(e) {//console.log(e);console.log('focus timestamp:' + e.timeStamp); }); /*** FocusEvent* 包括事件 focus, blur, focusin, focusout*/ function focus() {var event = new FocusEvent('focus', {view: window});document.getElementById('txt').dispatchEvent(event); } focus();

1)FocusEvent

語法如下

focusEventInit:

屬性

選項默認類型描述
relatedTarget可選nullEventTarget輔助FocusEvent目標

?

源碼查看

http://codepen.io/strick/pen/xgNGbz

?

參考資料:

事件類型一覽表

Comparison of Event Targets?

神奇的Shadow DOM?

WindowProxy and Window objects??

Inner and outer windows?

?


本文轉自 咖啡機(K.F.J) 博客園博客,原文鏈接:http://www.cnblogs.com/strick/p/6409463.html?? ,如需轉載請自行聯系原作者


總結

以上是生活随笔為你收集整理的JavaScript实现按键精灵的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区二区三区av在线 | 午夜精品一区二区三区三上悠亚 | 中文字幕av一区二区 | 欧美亚洲国产另类 | 蜜桃91麻豆精品一二三区 | 视频区图片区小说区 | 九色蝌蚪9l视频蝌蚪9l视频 | 精品一区二区三区电影 | 好吊妞视频这里只有精品 | 免费国产| 亚洲欧洲一区二区在线观看 | 欧美亚洲国产精品 | 人妻少妇精品久久 | 欧美在线一卡 | bangbros性欧美18 | 欧美久久久久久久久 | 国产欧美一区二区精品性色 | 亚洲精品福利视频 | 看91| 一级欧美黄色片 | 夜夜嗨av禁果av粉嫩av懂色av | 女人黄色片 | 69精品在线观看 | 天天干干干干干 | 三级欧美韩日大片在线看 | 午夜成人影视 | 97av.com | 日韩福利视频网 | 夜夜骚av一区二区三区 | 蜜桃成熟时李丽珍在线观看 | 极品在线播放 | 经典一区二区 | 少妇超碰 | 亚洲精品在线观看av | 成人av久久 | 亚洲成人第一 | 国产一区二区三区视频在线播放 | 亚色成人| 亚洲18在线看污www麻豆 | 日韩人妻一区二区三区 | 九月色婷婷 | 日韩视频一 | 天天看毛片 | 一级黄色淫片 | 欧美一区二区在线看 | 日韩第一区 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 又大又粗弄得我出好多水 | av噜噜| 日本国产高清 | 精品人妻少妇一区二区三区 | 蜜桃精品在线观看 | 97超碰免费在线观看 | 一级黄色片看看 | 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲视频在线免费看 | 91刺激| 欧美日韩中 | 日韩高清久久 | 国产91免费观看 | 99色图 | 少妇饥渴放荡91麻豆 | 久久无码高潮喷水 | 成年人免费av | 91国内精品 | 欧美高清精品一区二区 | 69久久久久久 | 亚色中文字幕 | 欧美日韩精品一区二区三区 | av毛片在线| 日本在线观看视频网站 | 五月丁香| 国产一级在线播放 | chinese国产精品 | 亚洲婷婷小说 | 久久久久久久无码 | 激情网页 | 日本一区二区三区免费看 | 欧美激情在线观看视频 | 一区二区三区福利 | 一级国产片 | 免费黄网站在线观看 | 性――交――性――乱a | 久久婷五月 | 韩国电影大尺度在线观看 | 国产乡下妇女做爰毛片 | 国产a v一区二区三区 | 91网站在线免费观看 | 中文字幕一区在线播放 | 91丨porny丨在线中文 | 国产精品手机在线 | 亚洲天堂2015| 日韩人妻精品一区二区三区 | 无码国产伦一区二区三区视频 | 亚洲综合图区 | 国产精品久久久久久久 | 欧美影院在线 | 日韩视频在线一区 | 天堂免费在线视频 |