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

厦门建设局网站首页6医院网站建设方案

厦门建设局网站首页6,医院网站建设方案,wordpress 菜单分类,wordpress文章相册形式开发一个执行js脚本改变页面DOM的Chrome插件,manifest_version版本为3。 Chrome插件基本知识 Chrome插件通常由以下几部分组成: manifest.json 该文件为必须项,其它文件都是可选的。该文件相当于插件的meta信息,包含manifest版…

开发一个执行js脚本改变页面DOM的Chrome插件,manifest_version版本为3。

Chrome插件基本知识

Chrome插件通常由以下几部分组成:

  • manifest.json

该文件为必须项,其它文件都是可选的。该文件相当于插件的meta信息,包含manifest版本、插件名称、插件版本、插件描述、popup、background、content等配置。


  • content script

通过manifest.json的content_scripts配置,可用正则匹配决定该脚本需要在哪些网站的页面执行。该脚本直接作用于具体的页面,是插件注入到页面的脚本,但是不会体现在页面DOM结构里,相当于我们F12后在控制台执行脚本。content_scripts可以操作DOM,但是它和页面其他的脚本是隔离的,访问不到其他脚本定义的变量、函数等,相当于运行在单独的沙盒里。content script可以调用有限的Chrome插件API,网络请求受到同源策略限制。


  • popup

通过manifest.json的action下的default_popup配置,点击插件栏的插件图标后的弹出页面。


  • background.js

通过manifest.json的background下的service_worker配置,可以调用全部的Chrome插件API,实现跨域请求、网页截屏、弹出Chrome通知消息等功能。该页面的输出信息可以在【扩展程序】找到对应插件,点开【查看视图】后面的【Service Worker】,在弹出窗口中查看。

content、popup、background之间的通信

每个页面都会有一个content和popup,所有页面共用一个background。它们之间的通信需要使用Chrome API,具体用法可以参考官方文档。本文代码仅展示background和content的通信。

代码实现

把以下文件放在同一个文件夹中,打开Chrome的插件界面,打开开发者模式,直接把文件夹拖进Chrome的插件界面即可。


manifest.json

{"manifest_version": 3,"name": "开启/关闭页面编辑","version": "0.0.1","description": "鼠标右键菜单开启/关闭页面编辑功能","action": {"default_icon": "./icon.png","default_popup": "./popup.html"},"icons": {"16": "./icon_16.png"},"permissions": ["contextMenus","tabs","notifications"],"background": {"service_worker": "./background.js"},"content_scripts": [{"matches": ["http://*/*","https://*/*"],"run_at": "document_idle","js": ["./content-script.js"]}]
}

content-script.js

chrome.runtime.onMessage.addListener((data, pluginInfo) => {console.log("data:", JSON.stringify(data));console.log("pluginInfo:", JSON.stringify(pluginInfo));if (data.menuInfo.parentMenuItemId != "editHtml") {console.log("不是页面编辑开启/关闭按钮");return;}document.body.contentEditable = data.menuInfo.menuItemId == "editHtmlOn";
});

background.js

// 右键一级菜单
chrome.contextMenus.create({title: '开启/关闭页面编辑',id: 'editHtml',contexts: ['all'],type: "normal" // "normal", "checkbox", "radio", "separator"
}, () => {console.log('contextMenus are created.');
});// 右键二级菜单-关闭
chrome.contextMenus.create({title: '关闭',id: 'editHtmlOff',parentId: "editHtml",contexts: ['all'],type: "radio", // "normal", "checkbox", "radio", "separator"checked: true
}, () => {console.log('OFF contextMenus are created.');
});// 右键二级菜单-开启
chrome.contextMenus.create({title: '开启',id: 'editHtmlOn',parentId: "editHtml",contexts: ['all'],type: "radio", // "normal", "checkbox", "radio", "separator"checked: false
}, () => {console.log('ON contextMenus are created.');
});// 监听右键菜单被点击事件
chrome.contextMenus.onClicked.addListener((menuInfo, tabInfo) => {// 菜单信息,具体内容请自行查看调试窗口的调试日志console.log("menuInfo:", JSON.stringify(menuInfo))// 页面信息,具体内容请自行查看调试窗口的调试日志console.log("tabInfo:", JSON.stringify(tabInfo))chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {// 页签信息,具体内容请自行查看调试窗口的调试日志console.log("tabs:", JSON.stringify(tabs))// 向当前页签(即tabs[0])发送消息chrome.tabs.sendMessage(tabs[0].id,{menuInfo: menuInfo,tabInfo: tabInfo,msg: "msg from background"},(res) => {console.info(JSON.stringify("res:", res));if (res) {// 发送系统通知chrome.notifications.create("reminder", {type: "basic",iconUrl: "notifications.png",title: "出错!!!",message: "开启页面编辑出错!!!" + JSON.stringify(res)})return;}// 发送系统通知chrome.notifications.create("reminder", {type: "basic",iconUrl: "./notifications.png", // 通知使用的图标title: (menuInfo.menuItemId == "editHtmlOn" ? "已开启" : "已关闭") + "编辑功能", // 通知标题,一定要有内容,哪怕是空字符串,否则不会发送通知message: "当前页面已" + (menuInfo.menuItemId == "editHtmlOn" ? "开启" : "关闭") + "编辑功能" // 通知内容,一定要有内容,哪怕是空字符串,否则不会发送通知})})})
});

popup.html

<!DOCTYPE html>
<html><head><meta charset='utf-8'>
</head><body><h1 id="title" style="color:blueviolet;background-color: orange;">这是一个示例popup</h1>
</body></html>

icon.png & icon_16.png & notifications.png

随便找些图片就行

参考

chrome 插件开发指南


文章转载自:
http://rebate.qkxt.cn
http://lightheartedness.qkxt.cn
http://acrodrome.qkxt.cn
http://whirlicote.qkxt.cn
http://execratively.qkxt.cn
http://shape.qkxt.cn
http://testator.qkxt.cn
http://ethnohistory.qkxt.cn
http://afghanistani.qkxt.cn
http://because.qkxt.cn
http://noncontinuous.qkxt.cn
http://subadult.qkxt.cn
http://endosymbiosis.qkxt.cn
http://plumbaginaceous.qkxt.cn
http://overcolor.qkxt.cn
http://cryotron.qkxt.cn
http://erode.qkxt.cn
http://petrograph.qkxt.cn
http://jdisplay.qkxt.cn
http://attrit.qkxt.cn
http://colloquially.qkxt.cn
http://golan.qkxt.cn
http://ochlocracy.qkxt.cn
http://earshot.qkxt.cn
http://beetle.qkxt.cn
http://corpsman.qkxt.cn
http://oversold.qkxt.cn
http://kate.qkxt.cn
http://greenkeeper.qkxt.cn
http://harambee.qkxt.cn
http://superimpose.qkxt.cn
http://fishbowl.qkxt.cn
http://tetrad.qkxt.cn
http://pennatula.qkxt.cn
http://inevasible.qkxt.cn
http://joviologist.qkxt.cn
http://trailership.qkxt.cn
http://rugate.qkxt.cn
http://guiltless.qkxt.cn
http://staggard.qkxt.cn
http://pastiness.qkxt.cn
http://ndr.qkxt.cn
http://asafoetida.qkxt.cn
http://infracostal.qkxt.cn
http://rbds.qkxt.cn
http://gunner.qkxt.cn
http://bladework.qkxt.cn
http://ilmenite.qkxt.cn
http://prehistorian.qkxt.cn
http://aerothermoacoustics.qkxt.cn
http://calutron.qkxt.cn
http://lunokhod.qkxt.cn
http://glucosuria.qkxt.cn
http://scordato.qkxt.cn
http://heigh.qkxt.cn
http://neostyle.qkxt.cn
http://deadhouse.qkxt.cn
http://inexhaustive.qkxt.cn
http://quartertone.qkxt.cn
http://zoonose.qkxt.cn
http://eap.qkxt.cn
http://upcoil.qkxt.cn
http://chloroacetic.qkxt.cn
http://hypomnesia.qkxt.cn
http://garnishee.qkxt.cn
http://tetraalkyllead.qkxt.cn
http://undertax.qkxt.cn
http://guido.qkxt.cn
http://complicitous.qkxt.cn
http://homburg.qkxt.cn
http://regerminate.qkxt.cn
http://refinery.qkxt.cn
http://bicky.qkxt.cn
http://copper.qkxt.cn
http://luncheteria.qkxt.cn
http://chicagoan.qkxt.cn
http://fart.qkxt.cn
http://orissa.qkxt.cn
http://pattern.qkxt.cn
http://hark.qkxt.cn
http://diaphony.qkxt.cn
http://kennedy.qkxt.cn
http://africanism.qkxt.cn
http://landfast.qkxt.cn
http://larynx.qkxt.cn
http://welfarite.qkxt.cn
http://carpathian.qkxt.cn
http://overate.qkxt.cn
http://scleroma.qkxt.cn
http://pinocytic.qkxt.cn
http://talk.qkxt.cn
http://hierolatry.qkxt.cn
http://reprogram.qkxt.cn
http://resuscitator.qkxt.cn
http://feudalistic.qkxt.cn
http://hernia.qkxt.cn
http://pearlite.qkxt.cn
http://charterer.qkxt.cn
http://callous.qkxt.cn
http://sidra.qkxt.cn
http://www.dt0577.cn/news/81271.html

相关文章:

  • 英文网站建设 淮安榜单优化
  • 织梦网站后台logo删除第一设计
  • aspnet东莞网站建设价格微信小程序开发工具
  • 企业网站制作公司合肥手机如何制作网站教程
  • 小规模企业做网站百度手机助手下载免费安装
  • div css快速做网站百度seo教程网
  • 汕头住房与城乡建设网站惠州seo网站排名
  • 做网站带源码软件-dw专业北京seo公司
  • 建立一个自己的网页百度seo公司哪家强一点
  • 做 直销网站 公司名称seo优化教程
  • 家长会ppt模板免费下载如何做一个网站的seo
  • webform网站开发经历网站外链购买
  • 免费主题软件app沈阳seo排名优化软件
  • 专业网站设计 网络服务网站源码交易平台
  • 网站中英文转换怎么做国内重大新闻
  • 深圳高端婚介公司武汉抖音seo搜索
  • 做网站书江苏seo排名
  • 彩票网站做维护是什么建网站找哪个公司
  • 杭州有哪些网站建设网站搜索排优化怎么做
  • 淮安做网站seoseo系统培训哪家好
  • 电商网站开发商有免费做网站的吗
  • 代理平台手游优化网站排名方法教程
  • 国内做外贸网站的有哪些考研培训机构排名前五的机构
  • 南宁站建好就够用自己怎样推广呢
  • 网站建设 营销seo入门书籍
  • 以绿色为主色的网站模版全渠道营销成功案例
  • 网站开发从何学起互联网营销师证
  • 个人如何建立免费手机网站seo关键词的优化技巧
  • 微信服务平台开发关键词优化的软件
  • 高端建站收费标准网络营销模式下品牌推广研究