首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    浏览器插件开发-manifest文件解读「建议收藏」

    当前扩展中的其他部分,例如弹窗中调用了 runtime.getBackgroundPage 后台脚本定义选项 { ......DOM,但是不能访问里边的任何 javascript 变量和函数,反之,页面中的js 也不能访问 content_script 中的变量和函数 访问目标网站的 DOM ,可以用来进行通信 分为两种情况...window) { return}; if (event.data.type && (event.data.type == "FROM_PAGE")) { port.postMessage...) { // 可以针对sender做一些白名单检查 // sendResponse返回响应 if (request.type == 'MsgFromPage') {...| 可选权限 (插件中可选的特性所需要的),两者的子配置项是一样的 选项的值是一个数组,代表每一个权限,权限可以是已知的权限字符串 也可以是一个主机的匹配模式 权限字符串大多都对应着一个同名的

    3.5K20

    Chrome 小工具: 启动本地应用 (Native messaging)

    , “nativeMessaging” 代表要在这个插件中同意调用这样的方法 “xxx”填入你想要的加载的网址 “content_scripts” 中”xxx” 表示在什么网页下执行我们与界面交互的...background.js var port = null; chrome.runtime.onMessage.addListener( function(request, sender, sendResponse...nativeHostName); port.onMessage.addListener(onNativeMessage); port.onDisconnect.addListener(onDisconnected); port.postMessage..., 在path中定义了我们要执行的本地应用程序, allowed_origins 中长串的字符是我们插件的id 能够在安装插件后从google chrome 插件里看到(安装插件 能够在chrome中插件开启开发人员模式并加载我们之前的插件文件包...这样我们插件中的Content.js 就能够接收并响应这个事件了!

    2.5K10

    记一次愚蠢的操作--线程安全问题

    所以有的时候,小王会问:“我这明明返回是success啊,怎么我的邮件没发出去呢” ------(异步) 每发送一封邮件,我们都会将这封邮件的信息入库(保存在MySQL中),在MySQL中我们可以得知这封邮件的发送时间...两个任务 要明确的是:等到整一个调用链结束(将Task对象放到消息队列中),才会将sendResponse对象返回出去。...sendResponse",Response.SUCCESS); // 如果中途某个地方可能有问题了,那我们将Map中sendResponse进行修改 map.put("sendResponse",Response.ERROR...于是我就去找原因啦,在查代码的时候发现前同事还在Service系统中的某个类留了一个注解@NotThreadSafe。...那我们将Map中sendResponse进行修改 map.put("sendResponse",Response.ERROR); // 把response的msgId的值设置为当前Task绑定的值 map.get

    49740

    React源码解析之requestHostCallback

    ); 接下来讲下animationTick方法 三、animationTick() 作用: 计算每一帧中 react 进行调度任务的时长,并执行该 callback 源码: let frameDeadline...let previousFrameTime = 33; //保持浏览器每秒 30 帧的情况下,每一帧为 33ms let activeFrameTime = 33; //计算每一帧中 react...接收,port2 发出的消息被 port1 接收 React 源码中的使用: // We use the postMessage trick to defer idle work until after...//判断浏览器是否强制渲染的标志 needsPaint = false; } }; 通过port.postMessage(undefined)就会执行该方法,判断是否有多余的调度任务需要被执行...(2)计算每一帧中 React 进行调度任务的时长,多出的时间留给下一帧的调度任务,也就是维护时间片 (3)跨域通知 React 调度任务开始执行,并在调度任务 throw error 后,继续执行下一个

    1.2K20

    【干货】Chrome插件(扩展)开发全攻略

    这是因为content-script有一个很大的“缺陷”,也就是无法访问页面中的JS,虽然它可以操作DOM,但是DOM却不能调用它,也就是无法在DOM中通过绑定事件的方式调用content-script...意思就是你想要在web中直接访问插件中的资源的话必须显示声明才行,配置文件中增加如下: { // 普通页面能够直接访问的插件资源列表,如果不设置是无法直接访问的 "web_accessible_resources...content-script的消息 chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { console.log...('收到来自content-script的消息:'); console.log(request, sender, sendResponse); sendResponse('我是后台,我已收到你的消息...port.postMessage({answer: '我是你爸!'})

    13K40

    写个自己的chrome插件

    像类似掘金插件又是怎么实现的,当我安装稀土掘金插件后,我的导航页都被改掉了,因此你也可以做一个类似的插件,来导航你公司的一些产品,方便快捷的实现你的内部导航 在开始本文之前,主要是从零认识一个chrome...png", "128": "images/icon-128.png" } } 让当前网页加载一个脚本 content_scripts指定加载对应脚本js,css注意matches中匹配的是当前访问的...username: 'Maic' }; // 调用onMessage.addListenter chrome.runtime.onMessage.addListener((message, sender, sendResponse...chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { console.log('content',.../popup.js"> 当你打开浏览chrome://extensions/然后添加插件04-demo 在打开一个测试页面 我通过插件中的popup.js

    2.3K10

    低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端

    所有当前的低能量应用配置文件都基于GATT。 蓝牙SIG为低能量设备定义了许多配置文件 。 配置文件是设备在特定应用程序中的工作方式的规范。 请注意,设备可以实现多个配置文件。...例如,描述符可以指定人类可读的描述,特征值的可接受范围或特征值的特定的测量单位。 服务 - 服务是一个集合的特点。 例如,您可以有一个名为“心率监视器”的服务,其中包括诸如“心率测量”的特征。...处于中心角色的设备扫描,寻找广告,并且外围角色中的设备进行广告。 GATT服务器与GATT客户端。 这决定了两个设备在建立连接后如何相互通信。...BLE权限 首先,需要在manifest中声明使用蓝牙和操作蓝牙的权限 在应用程序清单文件中声明蓝牙权限。...BLE的设备,请在应用清单中包含以下内容: <uses-feature android:name =“android.hardware.bluetooth_le”android:required =“true

    2.4K00
    领券