在组件上可以设一些属性,这些属性都有一个初始状态,然后用户的操作产生交互,只要是用setState去触发这个组件状态变化,则会触发这个组件重新渲染 UI 。...那么如何像这种方式导出自己的方法供父组件直接以函数方式调用?注意导出的方法必须是作为类方法就可以了,比如openNavDrawer这个函数就是导出给父用的。...触发的具体动作就需要通过回调注入进来,这时就用这种方式。 兄弟关系: 在共同的父中组合上面两种情况就可以了。...调试 chrome调试: 安装react dev的chrome官方插件。在手机上设置host的ip,点击start chrome debugging。...inspect元素:在模拟器中打开inspect element面板,点击模拟器中的元素,chrome会跳转到对应dom。 槽点: 在浏览器改动css后,模拟器的布局不跟着更新。
自动启动DevTools 在开发的时候,一般都要需要启动浏览器,打开 DevTools ,并打开我们开发的 URL 。我们可以在浏览器启动命令中添加一些配置,整个过程可以在一次点击中实现自动化。...查找未使用的 JavaScript Chrome 的 Coverage 面板可以让你能够快速找到 JavaScript 有没有被使用。...单击任何 JavaScript 文件,未使用的代码会用红条突出显示。 5. 找到DOM更改代码 当事件被触发时,很难确定哪个函数负责更新特定的 HTML DOM 元素。...断点有的时候并不好用,例如,如果在运行 1000 次的循环的最后一次循环报错了。这时你可以添加一个条件断点,让它仅在满足特定条件时才触发断点,例如 i > 999 。...可以在 Chrome 中或使用任何代码编辑器来编辑文件,每当重新加载页面时,都将使用更新的版本。 14. 管理客户端存储 网页可以使用多种技术将数据存储在客户端上。
,但是action这个配置得有,不然的话扩展程序管理界面的“Service Worker”将显示无效, //且无法点开“Service Worker”的开发者工具控制台以及点击插件图标时触发的这个方法会报错...('触发成功了'); //返回一个内容到发送消息的回调函数中 }); //发送消息,触发上面的onMessage chrome.runtime.sendMessage('', {text: '我是个测试内容...'}, function (msg) { console.log(msg); //打印的内容是:“触发成功了” }); 2、除了在插件内部contenscript background 和 popup...方法如下 首先,需要增加配置 externally_connectable:{matches:[“https://*.xxx.com/”]}指定允许哪些网站可以给当前插件发送消息,相当于白名单,只有在白名单中的站点发送的消息...}); //发送消息,触发上面的onMessageExternal //第一个参数是插件Id,指定要发送给哪个插件 //第二个参数是想要传给插件的数据信息 //第三个是让插件那边调用的回调函数,触发回来
那有没有一款针对零基础编码,低代码的工具,能够帮助我们完成 Web 端的自动化呢?...Automa 介绍 Automa 是一款 Chrome 插件,它能针对 Chrome 浏览器完成一系列自动化操作,并且可以执行重复性任务、网页截图、数据爬虫等功能 项目地址: https://github.com...条件判断、Element exists 元素存在 需要指出的是,Automa 还提供了网页元素选择器定位功能,只需要点击插件界面的「 Element Selector 」图标,然后选择目标控件,左下角就会显示控件的的选择器...PS:另外 Automa 插件还提供了快速获取父元素、子元素选择器的功能 4....最后 上面通过一个简单的自动化操作阐述了 Automa 使用的完整流程 Automa 提供的操作在 Web 自动化中基本可以满足实际工作要求,另外在工作流程中可以拖入「 JavaScript 」操作来完成一些复杂的自动化场景
1.箭头按钮:用于在页面选择一个元素来审查和查看它的相关信息,当我们在Elements这个按钮页面下点击某个Dom元素时,箭头按钮会变成选择状态 2.设备图标:点击它可以切换到不同的终端进行开发模式,移动端和...会走很多底层的封装方法,需要很多步骤才能真正进入这个函数块,此时将鼠标放在此函数上,会出现相关提示,会告诉你在该文件的哪一行代码处,点击即可直接看到这个函数,然后临时打上断点,按F10或者点击右上角的第二个按钮即可直接进入此函数的断点处...Breakpoints处,点击右侧的+号,可以添加请求的URL,一旦 XHR 调用触发时就会在 request.send() 的地方中断 image DOM Breakpoints: 可以给你的DOM元素设置断点...image ② 查看资源预览信息 在Preview标签里面可根据选择的资源类型(JSON、图片、文本、JS、CSS)显示相应的预览信息。下图显示的是当选择的资源是JSON格式时的预览信息。...下图显示的是当选择的资源是CSS格式时的响应内容。
Grammarly 可以实现实时语法检查,你边写它就边改,语法问题和修改意见会以标注的形式显示在文档的右侧,方便你去一一查看,而且在每条批注下面都会配有详细的解释,告诉你哪里错了,为什么要这样修改。...data.Grammarly=true时,调用sendUser()函数,在sendUser()函数中直接将user对象返回了,此user对象中包括了用户的所有信息,包括email,firstName,grauth...04 — 漏洞验证及利用 在官方的漏洞详情中,漏洞作者给出了在浏览器console中执行几行代码即可触发漏洞,如下图所示: 下面来解释一下这四行代码的意思: 1、将当前DOM中的节点元素置为可编辑状态(...默认不可编辑); 2、返回文档中匹配指定的选择器组的第一个元素,这里返回[data-action=”editor”]的节点元素并执行点击操作; 3、返回class=gr_-ifr的iframe节点元素对象...,再通过contentWindow得到iframe包含页面的window对象,最后将此对象注册到一个指定的监听器上,当该对象触发指定的事件message时,回调并执行匿名函数; 4、通过postMessage
重启chrome浏览器 在含有视频的页面使用鼠标右击视频区域,点击菜单栏中的「画中画」选项观看视频 正式开启 到了70版本已默认开启该特性,安装chrome扩展插件可进入画中画,进入画中画后,页面选项卡会出现一个蓝色的图标...点击切换,让其置为true 重启浏览器 打开含有视频页面,开始播放视频 在视频区域鼠标右键,会出现画中画菜单 开启画中画 需要注意的是,Chrome 与 Firefox 的画中画模式略有不同,Chrome...因为目前一个页面最多仅允许一个video显示在画中画窗口上。对于开发者而言,不需要退出画中画的是哪个video,因此只需要挂载到document上就可以了。.../exitPictureInPicture来触发的,比如用户通过chrome插件让视频进入画中画,这个时候需要监听这两个事件,来获取一些有用的信息并进行上报之类的行为。...需要注意的是这里不会返回画中画窗口下的对象信息(包括窗口width、height等) 无论在safari/chrome,如果画中画内播放的是实时音视频流,浏览器会在退出画中画时暂停掉视频的播放,需要在退出画中画后手动触发视频流继续播放
新标签页打开指定地址(用来绕过 Chrome 会阻止所有非用户触发的window.open的限制) GM_registerMenuCommand 向油猴插件菜单中添加脚本指令(通常用于打开自己写的设置界面或者执行代码之类的...,还可以引用本地脚本,所以我们只要 require 用 IDE 编辑的本地脚本就行了 在这之前我们需要允许油猴插件访问本地文件,以 Chrome 为例,在扩展程序列表chrome://extensions...,当你需要针对一个很多元素的静态列表监听每个元素的事件时也可以这么做,这种方法最大的优点是你只需要添加一个事件监听,如果你对列表中的每个元素都添加事件监听,会增大内存开销,影响页面性能 有种比较特殊的情况... 大致就是,当你点击 .item-a 的时候,.item-a 会被移除,并在一个异步函数doSth()完成后显示 .item-b 你当前的目标是要在 .item-b 出现的时候修改其内容 不好的思路...Mutation Events 的替代品 上面所说的场景可以按这个思路来解决 监听 .list 的点击 当触发点击事件时,找到 :hover 状态的 .item,对其添加 MutationObserver
控制台交互 JS表达式计算 在上一小节,我们已经看到可以在控制台输入JS表达式点击Enter即可得到表达式的值,当你在控制台输入命令时,会弹出相应的智能提示框,你可以用Tab自动完成当前的建议项 选择元素...设置断点 断点可以在DOM元素节点发生改变时、XHR生命周期状态改变时、指定的事件执行时被触发 ① DOM元素节点发生改变时 在Elements面板中指定的DOM节点上右击,在弹出的菜单中选择Break...下图是在我的系统里添加指定省市指定医院时由于增加了元素节点而触发的断点,通过单步调试可以看到会弹出一个div对话框供用户添加数据 ?...② 查看资源预览信息 在Preview标签里面可根据选择的资源类型(JSON、图片、文本、JS、CSS)显示相应的预览信息。下图显示的是当选择的资源是JSON格式时的预览信息。 ?...下图显示的是当选择的资源是CSS格式时的响应内容。 ?
更便捷的交互设计 既然可以访问 Web 内容,那么最简便的操作就是不用触发任何其他的按钮打开弹层,直接 识别登录页面,在原有登录页面的空白处中 插入我们的组件 DOM 元素,就可以实现最便捷的操作。...icons:扩展程序显示在右上角的图标,需要配置不同规格的图片,适应不同的显示需要。...target.dispatchEvent(event) 向一个指定的事件目标派发一个事件,从而触发监听函数的执行。...hl=zh-CN) 插件,点击按钮进行重新加载。 安装扩展文件 Chrome 允许安装 Chrome 应用市场和本地文件两种来源的扩展文件。...访问 chrome://extensions/,打开 开发者模式,点击 加载已解压的扩展程序,就可以选中我们本地的文件了,Edge 等浏览器也可以用。
异常 在引发已捕获或未捕获异常的代码行中。 函数 任何时候调用特定函数时。 代码行断点 在知道需要调查的确切代码区域时,可以使用代码行断点。 DevTools 始终会在执行此代码行之前暂停。...函数断点 如果想要在调用特定函数时暂停,可以调用 debug(functionName),其中 functionName 是要调试的函数。...如果是从 DevTools 控制台中调用 debug(),则很难确保目标函数在范围内。 下面介绍一个策略: 在函数在范围内时设置代码行断点。 触发此断点。...Mouse inner 如果是通过 mouse (鼠标事件来触发的)并且触发元素是写在触发元素内的情况。可以通过在当前触发元素。...然后再次触发,选择跳过断点。就可以使得元素出现。 ? Mouse outer 如果是通过 mouse (鼠标事件来触发的)并且触发元素是写在触发元素外的情况。可以通过断点触发来阻断。
ajaxStart()方法用于在Ajax请求发出前触发函数,ajaxStop()方法用于在Ajax请求完成后触发函数。...,options为插件方法的配置对象 例如,在页面中,添加一个被元素包含的图片元素,当在图片元素中移动鼠标时,在图片的右边,将显示放大后的所选区域效果,如下图所示: cookie插件——cookie...()方法返回与输入内容相匹配的字符串数据,显示在文本框下,提示选择,如下图所示: 右键菜单插件——contextmenu 右键菜单插件可以绑定页面中的任意元素,绑定后,选中元素,点击右键,便通过该插件弹出一个快捷菜单...).droppable({options}) selector参数为接收拖曳元素,options为方法的配置对象,在对象中,drop函数表示当被接收的拖曳元素完全进入接收元素的容器时,触发该函数的调用。...例如,当点击“提交”按钮时,如果文本框中的内容为空,则通过dialog插件弹出提示框,提示输入内容不能为空,如下图所示: 在浏览器中显示的效果: 3-7菜单工具插件——menu 菜单工具插件可以通过
浏览器页面右键菜单选项设置 右键菜单指的是我们在浏览器页面里鼠标弹出来的菜单,我们可以在这个菜单里加入我们插件的功能选项,高端大气上档次,主要是方便我们进行设置哈哈。 ?...注意:如果在创建的过程中出现错误,会在回调函数触发后才能捕获到,错误详细信息保存在Chrome.extension.lastError中。...如果类型为“selection”,您可以在字符串中使用%s显示选定的文本。...onclick ( optional function ) 当菜单项被点击时触发的函数。...插件右键菜单点击插件名跳转主页设置 ① 核心代码演示 manifest.json 文件加上 homepage_url,当点击 name 时就会跳转到我们指定的地址了。
当你无法为你的方法起一个准确的名称时,很可能你的方法不止做了一件事,违反了(Do one thing)。特别是你想在方法名中加入:And,Or,If等词时 2....需要注意的是,"重绘"不一定需要"重排",比如改变某个网页元素的颜色,就只会触发"重绘",不会触发"重排",因为布局没有改变。...先看"事件模式",你可以从中判断,性能问题发生在哪个环节,是JavaScript的执行,还是渲染? ? 不同的颜色表示不同的事件。 ?...此外,还可以查看某个区间的耗时情况。 ? 或者点击每一帧,查看该帧的时间构成。 ?...requestIdleCallback 是一个很新的函数,刚刚引入标准,目前只有Chrome支持。
如何实现一个谷歌浏览器插件 一、什么是Chrome插件? ★Chrome插件就是我们运行在Chrome浏览器 上的扩展程序,比如说vue-devtool。...插件", // 图标悬停时的标题 "default_popup": "popup.html" // 在工具栏点击插件弹出的页面 }, // 当某些特定页面打开才显示的图标...CSS文件,但是在注入CSS文件时,要小心,否则会覆盖网页原本的样式。...插件", // 图标悬停时的标题 "default_popup": "popup.html" // 在工具栏点击插件弹出的页面 }, tips:打开的任何页面都会运行插件程序...例如只在打开百度时运行此插件,否则就置灰 // 在组件安装完成之后注册监听函数 chrome.runtime.onInstalled.addListener(function() { // 在页面跳转时
大多数情况下是正常的,比如: 调用函数,将函数返回的结果进行缓存; 创建新的组件。 也可能是内存泄漏了。 当怀疑是内存泄漏时,我们就可以使用 Memory 面板记录快照,做进一步的排查。...点击这个蓝色的链接,就能跳到对应的代码位置: 此外,还可以用 Chrome 控制台提供的 getEventListeners(element) 方法,它会返回一个元素事件绑定的函数有哪些。...这个方法不是标准方法,是 Chrome 自带的工具方法,只能在控制台上用。我们可以写个方法,从根节点往下找,找出绑定函数数量最多的节点,这个节点多得离谱那就大概率是忘了解绑。...这个就导致了对一些对象的隐式引用,比如一个 DOM 元素。我们需要在不需要使用时将其设置为 null。 我们可以看看有没有什么 Detached 的元素。...排查方法很简单,去看 DevTool 的控制台输出了什么内容,看看有没有大对象。 一些有助于 debug 的 console 是有必要的,但不要滥用。
我们在这里可以找到对应的事件监听,由此我们定位到具体的执行函数。...()事件,当该DOM被移除的时候,就会触发; 如下图所示: 由于我们对id="test-div"执行的是remove()事件,所以,在该div打上一个Node Removeal断点的时候,当执行到这里...这就是基于DOM的断点调式。 二、Audits和Chrome性能插件 说道性能分析工具,可谓层出不穷。...但是Chrome自带的插件也很强大了,特别是Chrome看不惯Firefox,在小小的DevTool中内插了巨多功能。这是要上天了~ Audits就是性能分析插件,类似雅虎军规。...需要注意的是: “重绘”不一定需要“重排”,比如改变某个网页元素的颜色,就只会触发“重绘”。因为布局没有改变,所以没有触发“重排”。
浏览器在开启有道划词插件的时候,使用 AjaxFileUpload 插件上传文件报错 ? 开启插件时,该插件会往文档中添加音频元素节点 ?...第一次成功打印出来,即触发了load事件,但点击下一页后,iframe实际上已经刷新了,但并不会再触发这个load事件 后来的解决办法是换了种监听方法,区别主要是获取iframe对象的方式变了,还不知为啥会这样...,页面滚动到底部(有滚动条),点击select,input, textarea等相关项时,会自动滚动到页面顶部 在chrome60中还是正常的,一升级就出现问题了 目前还不知道为何,可能是chrome61...后来发现是点击中间时可以,但点击边缘就没反应 ? 看了源码发现,文件input[file]项是通过点击label模拟触发的 而label的可点击区域实际上是上图中的元素 ? ? ?...可以发现主要原因是计算元素的宽高出错,导致点击区域不正确。
二、问题解答 1 南哥,有一个Python并发性能问题:在用Python写高并发的代码时(网络请求任务,没有大量计算),有什么cpu优化的建议么,防止cpu占用过高 点击空白处查看答案 那你需要知道是哪个地方占用了大量的...Python有一个模块可以测量到最占用CPU的函数,叫做profile。...有没有更合适的方式? 2.在方法之间通过meta传递数据的时候,为了保证数据正确,会使用deepcopy,如meta={"name": deepcopy(name)},是一个好习惯吗?...等在python里面应该如何写呢,是该用什么方法,哪个库,求指导 点击空白处查看答案 a = 一个字典并且字典里面不含可变对象 b = a.copy() 修改b。...点击空白处查看答案 当然可以。非常简单。需要使用到chrome的扩展插件。你在Google搜索:selenium chrome extension change proxy就可以找到。 END
什么是浏览器插件? 简单来说浏览器插件,是浏览器上的一种工具,可以提供一些浏览器没有的功能,帮你做一些有趣的事情。开发者可以根据自己的喜欢,去实现一些功能。..."persistent": false } } 这样,插件就会在被需要时加载,在空闲时被关闭。比如安装、更新插件的时候,或者有其他页面与background通信的时候才会被加载。...,当页面点击按钮时,会出现两次弹窗。...API 生成,这个方法可以获得插件的资源的真实路径。...var backend = chrome.extension.getBackgroundPage(); backend.test(); // 访问bbackground的函数 background可以通过
领取专属 10元无门槛券
手把手带您无忧上云