下载插件并安装 在浏览器地址栏输入chrome://extensions/,点右上角的开发人员模式 ? 可以看到每一个扩展下面都有个ID,后面跟着一串字母,复制此ID,备用。...同时留意下扩展程序的版本号 文件目录: C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome...在上述的【扩展程序】页,打开【开发人员模式】,再点【打包扩展程序】,“扩展程序根目录”选刚才的版本号文件夹 ? 生成一个crx文件和一个pem文件,把crx文件保存好,pem可以丢掉。
Dr.Web DrWeb Security Space 11.0 Chrome 扩展的名字:Dr.Web Anti-Virus Link Checker Extension URL 在 index.html...0) { alert("AV name is DrWeb"); } ##Avira 当你安装了 Avira antivirus Pro 时,直接就给你安装了两个扩展...==null) {if ( AV.outerHTML.indexOf('/html/top.html')>=0 & AV.outerHTML.indexOf('chrome-extension://...== null) { var nort = NAV.outerHTML; if (nort.indexOf('coToolbarFrame')>=0 & nort.indexOf('/toolbar...这种方法并不能保证百分之百检出反病毒软件,因为用户可以禁用安装的 Chrome 扩展。 2. 这篇文章的灵感主要来自于远程检测用户反病毒软件。 3. 相关代码可以在 GitHub 上找到。
= null) || "ActiveXObject" in window) { } else { if (browser == "firefox") { if(version 如果需要使用高版本Chrome浏览器,需集成高级版插件'; var t = document.getElementById("OfficeDiv"); t.innerHTML...this.webOfficeObj.SetCaption(this.webOfficeObj.UserName + "正在编辑文档"); // 设置控件标题栏标题文本信息 //参数顺序依次为:...控件标题栏颜色、自定义菜单开始颜色、自定义工具栏按钮开始颜色、自定义工具栏按钮结束颜色、 //自定义工具栏按钮边框颜色、自定义工具栏开始颜色、控件标题栏文本颜色(默认值为:0x000000...this.webOfficeObj.HookEnabled(); this.webOfficeObj.CreateFile() // 根据FileType设置的扩展名来创建对应的空白文档
chrome扩展结构 chrome的扩展是以.crx结尾的安装包,如果你把它下载下来,并把它重命名为.rar压缩包文件,然后你就可以使用压缩软件对它进行解压,加压之后,就会发现其实chrome的扩展包里面就是一些...js,css,html文件,可以说你只要会写前端,那么开发一个chrome扩展插件将会非常容易。...() { } ); 扩展能够做什么 扩展能够做什么主要取决于浏览器为我们提供了哪些API,庆幸的是,chrome为我们提供了足够多好用的API。...我们可以操作用户的书签和浏览记录 我们可以控制下载,管理下载内容 我们可以监听网络请求,监听事件响应 我们可以修改界面样式,可以添加自定义css 我们可以在页面添加想要的元素 总之,chrome几乎为我们提供了完整控制浏览器的扩展...(null, function(tab){ chrome.tabs.sendMessage(tab.id, {type: "colors-div", color: "#F00"});
('form'); var input = document.getElementById('input'); document.getElementById('SendClickevent'...建立通信 这一步也是相当简单,chrome 官方的文档也有很多介绍 我这边就写下实现步骤 // 修改 background.js 为如下代码 static emitMessageToSocketService...break; } return res } static handleClickEvent(payload) { let data = null...click() } return data } static handleInputEvent(payload) { let data = null...插件的朋友们也可以尝试下 参考资料 【干货】Chrome 插件(扩展)开发全攻略(https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html
这其实是上一篇"iframe框架取值兼容ie/firefox/chrome的写法"的扩展应用: 应用场景:iframe个人感觉最独特的应用之一就是配合P3P协议可以实现跨域写入cookie(好象除此之外...(iframeId).document; if (ofrm==undefined) { ofrm = document.getElementById(iframeId)...=null && str.length>0){ document.getElementById("result").innerHTML = "" + new Date().toLocaleString() + " " + str + ""; } else{ document.getElementById...如果打算页面一打开就开始检测,一定要放在index.html页body的onload事件中,否则会出异常(原因是index.html尚未加载完成,这时就急着获取框架的内容,得到的是undefined或null
WebAssembly 是一项比较新的技术,只有比较现代的浏览器才支持 WebAssembly,例如 Chrome、FireFox浏览器。 ?...Go WebAssembly 初体验 下面我们就开始体验一下 Chrome 浏览器与 Go 代码是如何交互的。...() // 输入参数 var callback = params[1] // 回调参数 var result = fib(n) // 调用回调函数,传入计算结果...第三步 编写网页文件 index.html,这个网页包含两个输入框,第一个输入框用来输入整数参数,第二个输入框用来呈现计算结果。...运行静态文件服务器,这里不能使用普通的静态文件服务器,因为浏览器要求请求到的 WebAssemly 字节码文件的 Content-Type 必须是 application/wasm,很多静态文件服务器并不会因为扩展名是
当offsetParent为body时情况比较特殊: 在IE8/9/10及Chrome中,offsetLeft = (body的margin-left)+(body的border-width)+(body...如果这个容器元素未进行CSS定位, 则offsetParent属性的取值为根元素的引用。...总的来说两条规则: 1、如果当前元素的父级元素没有进行CSS定位(position为absolute或relative),offsetParent为body。...虽然结果不同,但是可以发现chrome和safari也都和火狐一样,顺利地读取到了属性值。...]; } } } //offsetWidth获取的是元素实际的宽度(包括边框和内边距) //只要是多物体运动,所有的属性都不能共用 最后一个动画效果完善了上述所有动画的代码,自己可以根据上述的代码进行扩展
= NULL; pCurrAddresses = pCurrAddresses->Next) { // 确保 MAC 地址的长度为 00-00-00-00-00-...("mac").innerHTML = mac; document.getElementById("macAddress").value = mac; document.getElementById...("macAddress").style.display = ''; 通过 object 标签引入了 OCX 文件,定义了 id 为 getmac,然后通过 getmac...后来,找到一个开源的 Chrome 的插件,也完成 MAC 地址的获取,该 Chrome 插件分为两部分,一部分是 Chrome 的插件,另外一个是 EXE 文件,该 EXE 文件也是与插件进行通信的,...由于这个 Chrome 插件不是我写的,我就不往这里放了。
什么是Chrome插件 严格来讲,我们正在说的东西应该叫Chrome扩展(Chrome Extension),真正意义上的Chrome插件是更底层的浏览器功能扩展,可能需要对浏览器源码有一定掌握才有能力去开发...鉴于Chrome插件的叫法已经习惯,本文也全部采用这种叫法,但读者需深知本文所描述的Chrome插件实际上指的是Chrome扩展。...; else html = '当前页面使用了jQuery,版本为:'+result; alert(html); }); }); // 打开某个资源 document.getElementById...tabs[0].id: null); }); }); } 本地存储 本地存储建议用chrome.storage而不是普通的localStorage,区别有好几点,个人认为最重要的2点区别是: chrome.storage...文档 模糊匹配规则语法详解 第三方资料 部分中文资料,不是特别推荐: 360安全浏览器开发文档 360极速浏览器Chrome扩展开发文档 Chrome扩展开发极客系列博客
null和undefined转换为布尔型为false。...什么时候使用===,什么时候使用== 除了==null外,其他地方用=== const obj = {a:1} if(obj.b==null){} // 相当于 //if(obj.b === null...a instanceof Array 手写一个简易的jquery,考虑插件和扩展性?...) ajax 状态码 xhr.readyState 0为还没有调用send()方法 1为已调用send()方法,正在发送请求 2为send()方法执行完成,已经接收到全部响应内容 3为正在解析响应内容...console.log(input1.value) }} 代码: const input1 = document.getElementById('input1') let timer = null input1
答案是肯定的 本篇文章以 Chrome 插件为例,结合一个实例,聊聊 Web 端自动化的另一种方案 2....Chrome 插件 Chrome 扩展插件运行于基于 Chromium 内核的浏览器 包含:Chrome 浏览器、Microsoft Edge、360 浏览器等 一个 Chrome 扩展插件有 3 类文件组成...这里设置所有的页面都会执行 content.js 脚本,当匹配到第二个页面时,执行 content_vx.js 脚本 需要指出的是,run_at 设置为 document_end,代表当页面加载完成后...("ContentHtml_txtUserName"); //密码 const password_element = document.getElementById("txtPassword"); /...插件管理界面 开启「 开发者模式 」,然后点击左侧的「 加载已解压的扩展程序 」加载上面创建的项目文件夹 开启扩展插件,每次打开目标网站或退出登录时,会发现网页会自动完成登录操作 4.
答案是肯定的 本篇文章以 Chrome 插件为例,结合一个实例,聊聊 Web 端自动化的另一种方案 2....Chrome 插件 Chrome 扩展插件运行于基于 Chromium 内核的浏览器 包含:Chrome 浏览器、Microsoft Edge、360 浏览器等 一个 Chrome 扩展插件有 3 类文件组成...这里设置所有的页面都会执行 content.js 脚本,当匹配到第二个页面时,执行 content_vx.js 脚本 需要指出的是,run_at 设置为 document_end,代表当页面加载完成后...("ContentHtml_txtUserName"); //密码 const password_element = document.getElementById("txtPassword"); /...插件管理界面 开启「 开发者模式 」,然后点击左侧的「 加载已解压的扩展程序 」加载上面创建的项目文件夹 开启扩展插件,每次打开目标网站或退出登录时,会发现网页会自动完成登录操作 4.
一、Edge插件概述 Microsoft Edge插件(或扩展)是基于Chromium内核的浏览器扩展,可以为浏览器添加新的功能或修改现有功能。...{ "manifest_version": 3, "name": "自定义Web背景图片", "version": "1.1", "description": "为你的网页添加个性化背景图片...=> { const url = document.getElementById('bgUrlInput').value; if (url) { chrome.storage.local.set...点击“加载已解压的扩展”按钮,选择插件文件夹。 插件安装成功后,可以在浏览器工具栏中看到插件图标,点击它即可更改背景。...后续扩展 背景上传功能:可以加入上传背景图片的功能,允许用户直接从本地选择图片作为背景。 其他定制选项:支持更多的背景特效,例如背景模糊、视频背景等。
transform: translateX(0) rotateY(0); } }` document.body.appendChild(style); bigEye = document.getElementById...('bigEye'); eyeball = document.getElementById('eyeball'); eyeFilter = document.getElementById('...是点击扩展里本插件的图标的时候。...= null) { chrome.tabs.sendMessage( tab.id, { type: "gethref" },..., }); } if (emotion > 80) { chrome.notifications.create(null, {
//FIREFOX de.mozRequestFullScreen(); }else if (de.webkitRequestFullScreen){ //CHROME...//FIREFOX de.mozCancelFullScreen(); }else if(de.webkitCancelFullScreen){ //CHROME.../W3C element.webkitRequestFullScreen || //FireFox element.mozRequestFullScreen || //Chrome...== null) { wscript.SendKeys("{F11}"); } } } //退出全屏 判断浏览器种类 function exitFull(...== null) { wscript.SendKeys("{F11}"); } } } 监听退出全屏事件 //监听退出全屏事件 window.onresize
这里直接全部贴出来、 manifest.json 此 JSON 文件描述了扩展程序的功能和配置。也是插件最关键的文件,目录结构更为复杂的小程序,此文件必须位于根目录下。...扩展文件的发行版本,类似vue2 还是vue3的声明 "action": { // 声明 Chrome 应用作扩展程序的操作图标的图片,以及当用户点击扩展程序的操作图标时在弹出式窗口中显示的 HTML...从本地加载扩展程序 Pasted image 20231230213318 可以看到已经加载成功了,图标正是最后一个图片文件hello_extensions.png 单机Hi图标,在 右键选检查,会再跳出来一个窗口...('get-cookies'); var toast = document.getElementById('toast'); function showToast(message) {...hl=zh-cn 其他示例 chrome扩展示例 https://github.com/GoogleChrome/chrome-extensions-samples
2.下面的例子会出现document.getElementById为空的情况。...但是这里通过通过document.getElementById读取的是对象为空。...假如对应的为 一组对象 ,则返回该组对象中的第一个。 如果无符合条件的对象,则返回 null 。...换句话说,IE6/7/8实现document.getElementById时没有用到this,而 IE9/Firefox/Safari/Chrome/Opera 需要用到this,这里的this正是...元素的文档序列可以通过 Element.sourceIndex来获取 document.getElementById(name) 只返回第一个具有id或name为name的元素 所以不是null
再来看怎么做的 原理其实很简单 主要使用了codeMirror来做编辑器 数据保存在本地存储,编辑器内容变化时会自动存储,再次打开时会从本地存储里面读取并恢复 在标签页直接打开、从工具栏打开记事本,需要安装chrome...创建扩展应用 从桌面的插件扩展图标进入扩展后台 点击添加插件,填写名称,选择本地代码后确定即可 在插件信息页面填写插件描述信息,上传插件图标 这里的触发词选项需要说明下,可以简单理解为插件的唯一标识,...> js代码 js代码重点有2部分 重点一:codeMirror编辑器使用 创建codeMirror编辑器并添加change事件监听 editor = CodeMirror.fromTextArea(document.getElementById...编辑器支持sublime快捷键' function textChangeHandler(text){ if(typeof text === undefined || text === null...= null && text !
六、鼠标滚轮 $('#content').on("mousewheel DOMMouseScroll", function (event) { // chrome & ie || // firefox...u.indexOf("chrome") > -1 && (/webkit|khtml/).test(u), isSafari3: !...u.indexOf("chrome") > -1 && (/webkit|khtml/).test(u) && u.indexOf('webkit/5') !...value="上传" accept="image/*"> 3、低版本浏览器 /* 通过扩展名...= null) byteValLen += 2; elsebyteValLen += 1; if (byteValLen > max) break; returnValue += val[i]; }
领取专属 10元无门槛券
手把手带您无忧上云