当前位置: 首页 > news >正文

安宁市建设局网站广告品牌设计机构网站织梦模板

安宁市建设局网站,广告品牌设计机构网站织梦模板,信阳seo优化顾问,网站开发 前端 后端Chrome扩展通信 chrome扩展的5种js js类型介绍popup单击插件图标后的弹窗中的js#xff0c;由于单击图标打开popup#xff0c;焦点离开又立即关闭#xff0c;生命周期一般很短。content-script与页面共享DOM#xff0c;但是不共享JS#xff0c;可访问部分chrome扩展API。…Chrome扩展通信 chrome扩展的5种js js类型介绍popup单击插件图标后的弹窗中的js由于单击图标打开popup焦点离开又立即关闭生命周期一般很短。content-script与页面共享DOM但是不共享JS可访问部分chrome扩展API。background权限最高几乎可调用所有Chrome扩展API除了devTools且可以无限制跨域。生命周期最长跟随浏览器开关。injected-script通过DOM操作的方式向页面注入的一种JS和原始页面共享js即可访问原始页面变量方法等无法访问Chrome扩展API。devtools每打开一个开发者工具窗口都会创建devtools的页面的实例F12窗口关闭页面也随之关闭故devtools的生命周期和devtools窗口是一致的。可访问一组特有的DevTools APIbackground都无权访问chrome.devtools.panels面板相关chrome.devtools.inspectedWindow获取被审查窗口的相关信息chrome.devtools.network获取有关网络请求信息。 Chrome插件提供的2种额外的通信方式 chrome.tabs.sendMessage和chrome.runtime.sendMessage 用于简单的一次性请求;chrome.tabs.connect和chrome.runtime.connect用于长时效连接。 通信接口使用限制 inject-scriptcontent-scriptpopup-jsbackgroundinject-script-window.postMessage--content-scriptwindow.postMessage-chrome.runtime.sendMessage chrome.runtime.connectchrome.runtime.sendMessage chrome.runtime.connectpopup-js-chrome.tabs.sendMessage chrome.tabs.connect-chrome.runtime.sendMessage chrome.runtime.connectbackground-js-chrome.tabs.sendMessage chrome.tabs.connectchrome.tabs.sendMessage chrome.tabs.connect-devtools-jschrome.devtools.inspectedWindow.evalchrome.runtime.sendMessagechrome.runtime.sendMessage chrome.runtime.onMessageExternal 接口用于扩展间通信与chrome.tabs.sendMessage 用法类似。 一次性请求 一次性请求类似于HTTP请求包含一次请求和一次返回且如果接收方不在线就会出现请求失败 扩展程序popup、background向content-script一次性通信 //popup.js发送 function sendToContentScript(message, callback){chrome.tabs.query({active: true, currentWindow: true}, tabs {chrome.tabs.sendMessage(tabs[0].id, message, callback);}); } sendToContentScript({cmd:test, value:popup_to_content}, res {console.log(res) *// {res:content_to_popup}* } );// content_script.js接收 chrome.runtime.onMessage.addListener((request, sender, sendResponse) {console.log(request) *// {cmd:test, value:popup_to_content}*if(request.cmd content_to_bg){sendResponse({res:content_to_popup})// 若异步使用sendResponse需添加return true*} })双方通信直接发送的都是JSON对象不是JSON字符串所以无需解析很方便当然也可以直接发送字符串 content-script主动向扩展程序background、popup一次性通信 // content_script.js发送 chrome.runtime.sendMessage({cmd: test, value:content_to_bg}, res {console.log(res); //{res:bg_to_content} });// background.js接收 chrome.runtime.onMessage.addListener((request, sender, sendResponse) {console.log(request); // {cmd: test, value:content_to_bg}sendResponse({res:bg_to_content}) });注意事项 content_scripts向popup主动发消息的前提是popup处于打开状态否则需要利用background作中转使用chrome.runtime.sendMessage后无论是否需要回应接收方都需调用sendReponse反馈若不调用则发送方就会报错如果background和popup同时监听那么它们都可以同时收到消息但是只有一个可以sendResponse一个先发送了那么另外一个再发送就无效 页面脚本包括inject-script和content-script之间一次性通信 由于inject-script和content-script内均可获取到原始页面的window对象故可通过window.postMessage来进行通信。该方法还可规避跨域的限制,可以在任意页面之间进行通信。 //inject-script window.postMessage({cmd:test,value:inject_to_content},*)//content-script window.addEventListener(message, e {console.log(e.data) //{cmd:test,value:inject_to_content} })长时效连接 长连类似 WebSocket建立连接后会一直保持双方可以随时互发消息。 chrome.tabs.connect和chrome.runtime.connect 长时效连接通信示例 扩展程序和web页面之间建立长连接只需要从一端建立就可以了。 在popup或js或background发起连接请求 //popup.js或background.js 发起连接需要指定发送到某个标签页 chrome.tabs.query({active: true, currentWindow: true}, tabs {const port chrome.tabs.connect(tabs[0].id, {name: popup});//向指定tabd页发起连接请求port.postMessage({cmd: popup-connect,value:extension});port.onMessage.addListener(msg {if(msg.cmd connected) {//do somethingport.postMessage({cmd: done});}}); });在content-script发起连接和监听消息 // content-script直接建立长链接 const port chrome.runtime.connect({name: content}); port.postMessage({cmd: cnt-connect}); port.onMessage.addListener(msg {if(msg.cmd connected){//do somethingport.postMessage({cmd: done});} });任意一端监听连接请求 chrome.runtime.onConnect.addListener(port {if(port.name popup) {port.onMessage.addListener(msg {if(msg.cmd popup-connect) port.postMessage({cmd: connnected});});}else if(port.name content){......} });postMessage和messageChannel 长时效连接通信 同一MessageChannel实例下的port1和port2两个对象可以通过postMessage和onmessage方法相互发送和接收消息;port1和port2是MessagePort实例MessagePort继承了Transferable接口可在不同可执行上下文之间传递。window.postMessage(message, targetOrigin, [transfer]),第三个参数可以用来传递Transferable对象 //inject-script const {port1,port2} new MessageChannel(); window.addEventListener(load, () { port1.onmessage (e) {console.log(e) } window.postMessage(来自inject_script的信息, *, [port2]); });//content-script window.addEventListener(message, e{e.port[0].postMessage(来自content-script的信息) });
http://www.dnsts.com.cn/news/231409.html

相关文章:

  • 做文件的网站建立网站需要多少钱经营y湖南岚鸿非常好
  • 南宁小程序开发网站建设公司全国分站seo
  • 漯河做网站的公司鄞州区建设局网站
  • lol小米和谁做的视频网站专业集团门户网站建设企业
  • 辽宁省住房和城乡建设厅网站ps网站首页设计
  • 公司制作网站多少钱网络服务商是谁
  • 永州网站推广我是这样做网站的米课
  • 怎样创建网站以及建站流程是什么新乡网站建设制作
  • 绵阳网站关键词wordpress前段编辑器
  • 做国外网站wordpress 自动seo插件
  • 做金融服务网站赚钱上海进一步优化
  • 利用jquery做音乐网站宁阳网站seo推广
  • 赣州市建设工程造价管理网站湖南网站建站系统哪家好
  • 定制小程序网站开发公司贵阳小程序开发
  • 珠海网站建站自学ui设计需要多久
  • 网站建设怎么报印花税如何营销推广
  • 书荒小说阅读器是哪个网站做的中国最好的网站建设有哪些
  • dede学校网站模板下载北京大型广告公司有哪些
  • 重庆网站推广入口网站建设 兼职 外包
  • 比58同城做的好的网站海口网约车资格证在哪里报名
  • 佛山网站设计中心wordpress批量发布器
  • vultr 搭建wordpress优化大师有必要安装吗
  • php开源网站网站备案 万网
  • 坪山商城网站建设哪家便宜成都外贸网站建设
  • 织梦音乐网站品牌建设运营的最高境界是
  • 秦皇岛哪里做网站上海响应式网站制作公司
  • 直播间 网站建设大理州城乡建设局官方网站
  • 万网网站根目录坪山公司网站建设
  • 成功的微网站wordpress购物分享主题
  • 免费空间建网站中小型网站建设与管理总结