前言

isTrusted是DOM属性(只能可读):如果事件是由用户调用的,则该事件是可信的,如果是由脚本调用的,则该事件是不可信的。

总的来说就是:如果你是通过正常浏览器方式进行操作,基本无法改变该属性。

解决方法

1.使用python的selenium进行模拟点击,因为python执行的是Chrome DevTools Protocol协议

2.node的话使用puppeteer来弄, puppeteer可以配置不显示浏览器, 还可以直接访问本地文件, 我是比较推荐这个方式来弄的

3.使用谷歌扩展API

manifest.json

{"name": "Getting Started Example","version": "1.0","description": "Build an Extension!","manifest_version": 3,"permissions": ["debugger","declarativeContent","storage","activeTab"],"background": {"service_worker": "service-worker.js"},"content_scripts": [{"matches": ["<all_urls>"],"js": ["js/jquery-1.8.3.js", "js/content.js"]}],"web_accessible_resources": [{"matches": ["<all_urls>"],"resources": [ "js/inject.js", "js/collina.js","js/jquery-1.8.3.js"]}],"action":{"default_popup": "popup.html","default_icon": "img/1.png","default_title": "Latest Covid Report"},"icons": {"16": "img/1.png","32": "img/1.png","48": "img/1.png","128": "img/1.png"}}

content.js

// 监听到popup.js消息
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {test_dom()
})function test_dom() {// 通过谷歌浏览器bug进行添加信任事件window.addEventListener('mousedown', onDownEvent);window.addEventListener('mouseup', onUpEvent);action_dom()
}
function action_dom() {let nav_dom = $(".zcy-panel-header-title")[0]console.log(nav_dom)nav_dom.addEventListener('mousedown', function(e) {console.log("...点击按钮 mousedown...")console.log(e)e.preventDefault();let obj = { eventPlease: "trusted", x: 0, y: 0, mouse: "D" }chrome.runtime.sendMessage(obj, function (response) {console.log("...content mousedown action_dom response...");console.log(response);});}, true);let clickEvent = document.createEvent('MouseEvents');clickEvent.initEvent('mousedown', true, true);nav_dom.dispatchEvent(clickEvent);// 弹起nav_dom.addEventListener('mouseup', function(e) {console.log("...点击按钮 mouseup ...")console.log(e)e.preventDefault();let obj = { eventPlease: "trusted", x: 0, y: 0, mouse: "U" }chrome.runtime.sendMessage(obj, function (response) {console.log("...content mouseup action_dom response...");console.log(response);});}, true);let click2Event = document.createEvent('MouseEvents');click2Event.initEvent('mouseup', true, true);nav_dom.dispatchEvent(click2Event);}function onDownEvent(e) {console.log("...onDownEvent...")console.log(e);
}
function onUpEvent(e) { console.log("...onUpEvent...")console.log(e);
}

简易写法:

 let obj = { eventPlease: "trusted", x: cx || 400, y: cy || 200, mouse: "D" }chrome.runtime.sendMessage(obj, function (response) {console.log("mousedown 返回信息:");console.log(response);});

popup.html

<div class="bottom"><h2>浏览器信任事件:</h2><div><button id="t7">开启</button><button id="t8">测试</button></div></div>

popup.js

$("#t7").click(function () {console.log("t7 点击...")if ($("#t7").text() == '开启') {// $("#t7").text("关闭");chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {debuggeeId = { tabId: tabs[0].id }console.log(debuggeeId)chrome.debugger.attach(debuggeeId, '1.2', function() {chrome.debugger.sendCommand(debuggeeId, "Debugger.enable", {}, function() {console.log("-----开启------")})})});} else {// 关闭不了// $("#t7").text("开启");// console.log(debuggeeId)// chrome.debugger.detach(debuggeeId, function() {//     chrome.debugger.sendCommand(debuggeeId, "Debugger.disable", {}, function() {//         console.log("------关闭-----")//     })// })}})$("#t8").click(function () {console.log("t8 点击...")sendMessageToContentScript({cmd:'find8', value:'测试事件'}, function(response) {console.log('回复:'+response);});})// 向content.js 发送信息
function sendMessageToContentScript(message, callback) {chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {chrome.tabs.sendMessage(tabs[0].id, message, function(response){if(callback) callback(response);});});
}

service-worker.js

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {sendResponse({ yourEvent: "正在调整, 需要时间生效" });xC = request.x; yC = request.y;if (request.mouse == "D") {console.log("......service-worker 鼠标按下......");chrome.debugger.sendCommand({ tabId: sender.tab.id }, "Input.dispatchMouseEvent", { type: "mousePressed", x: xC, y: yC, button: "left", clickCount: 1 }, function (e) { console.log('clickDown')console.log(e) });} else if (request.mouse == "U") {console.log(".......service-worker 鼠标弹起.......");chrome.debugger.sendCommand({ tabId: sender.tab.id }, "Input.dispatchMouseEvent", { type: "mouseReleased", x: xC, y: yC, button: "left", clickCount: 1 }, function (e) { console.log('clickUp') console.log(e)});}
})

如何触发‘isTrusted = true‘点击事件相关推荐

  1. 微信小程序只允许触发一次点击事件(防止多次点击事件)

    微信小程序只允许触发一次点击事件(防止多次点击事件) 超级简单 容易理解 可以让绑定的事件只触发一次 //.wxml <button bindtap="click1"> ...

  2. html地图无法点击,无法触发谷歌地图标记点击事件从HTML按钮

    我尝试创建一个HTML按钮,可以触发谷歌地图上的标记的点击事件,所以每当我点击按钮,地图将自动放大到标记和显示infowindow.这里是我的代码无法触发谷歌地图标记点击事件从HTML按钮 Semua ...

  3. jq实现点击一个按钮,触发另一个点击事件(点击按钮触发另一个按钮的点击事件)

    jq实现点击一个按钮,触发另一个点击事件 $("#a").click(function(){$("#b").trigger('click');}) 实现点击完i ...

  4. vue中进入页面,自动触发一次点击事件

    vue中进入页面,自动触发一次点击事件 html script 一进去页面,我肯定是要进去就能看到数据,而不是需要点击选项1才得到数据,解决办法就是直接在created()中调用 html <d ...

  5. [Swift]代码触发UIButton的点击事件

    使用极光的手机号码一键登录功能,要求点击按钮后先弹出协议同意,同意协议后自动改变底部协议状态再自动代码触发登录按钮的点击事件. OC: [but sendActionsForControlEvents ...

  6. js手动触发页面元素点击事件,程序触发,自定义点击事件模拟点击

    页面有时候的使用场景需要手动控制某个元素响应点击事件,可以达到不直接点击元素来响应事件,这里可以使用element.dispatchEvent(),在使用element.dispatchEvent() ...

  7. JQ trigger触发a标签点击事件

    trigger() 方法触发被选元素的指定事件类型. $("a").trigger('click') ; 这样直接触发a标签上的点击事件无法生效 需要绑定给a标签的子集 $(&qu ...

  8. js触发button的点击事件

    1. $(".tab").click(function () { })2. $(".tab").on("click",function () ...

  9. jquery trigger触发a标签点击事件问题

    最近在一个项目中使用trigger触发a标签的click事件,如:$('a').trigger('click'),但是一直未成功..触发不了. 经过百度查找才知道: $('a').trigger('c ...

最新文章

  1. 《Cisco/H3C交换机配置与管理完全手册(第2版)》终稿封面和目录
  2. 使用HAProxy、PHP、Redis和MySQL支撑10亿请求每周架构细节
  3. mysql多表成绩查询_MySQL多表数据记录查询(一)
  4. oracle scn与数据恢复,[Oracle] SCN与数据恢复的关系
  5. 达摩院2020十大科技趋势发布:科技浪潮新十年序幕开启
  6. 11210怎么等于24_想要消耗100大卡热量,怎么做才最简单?
  7. Cordova+Ionic之坑
  8. 不重启修改计算机名称,批处理不重启快速修改计算机名
  9. 荣耀青春30青春版能升鸿蒙,或是新一代拍照神器 荣耀30青春版今日发布
  10. hive的row_number()函数
  11. Tomcat实现Session对象的持久化原理及配置方法介绍
  12. [转精]IO_STACK_LOCATION与IRP的一点笔记
  13. 平面设计中经常使用的构图技巧有哪些
  14. 报错提示:应用程序无法启动,因为应用程序的并行配置不正确,有关详细信息,请参阅应用程序时间日志,或使用命令行sxstrace.exe工具。有效解决方法
  15. Failed to process package ‘cartographer_ros‘ :
  16. AprilTag: A robust and flflexible visual fifiducial system理解
  17. 机械硬盘速度突然变慢了
  18. 矩阵理论| 基础:线性子空间(非平凡子空间)、空间分解、直和分解
  19. Vue.extend构造器
  20. BlockCode 少儿编程 1《拔萝卜》

热门文章

  1. 如何在win10上搭建服务器
  2. debian ELK6.2.2安装教程
  3. 一个中专生:我在华为面试的真实经历
  4. 安卓选择相册或者相机图片并裁剪适配华为小米机型
  5. 基于iReport5.5+JavaBean+Struts2(注解方式)的报表设计与查看
  6. richfaces 经典记录
  7. Oracle最无奈错误PLS-00103
  8. 给定C语言数据结构,给定C语言的数据结构struct T { int w; union T { char c;int i;double d;)U; };...
  9. 使用Session+Cookie实现7天免登录
  10. EPMS- 让企业应用更加轻便!