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

小说网站做公众号好还是网站好国外网站开发

小说网站做公众号好还是网站好,国外网站开发,wordpress 的论坛,wordpress 一键生成app目录 将Firefox插件导入Edge/Chrome中前言导出火狐插件.xpi格式插件导入edge/chorme中错误示范1错误示范2修改过程manifest.jsondict文件夹修改backgroundScript.jsinjectedScript.jsdebug过程最终backgroundScript.js和injectedScript.js代码 完工阶段修改后的源码 将Firefox插… 目录 将Firefox插件导入Edge/Chrome中前言导出火狐插件.xpi格式插件导入edge/chorme中错误示范1错误示范2修改过程manifest.jsondict文件夹修改backgroundScript.jsinjectedScript.jsdebug过程最终backgroundScript.js和injectedScript.js代码 完工阶段修改后的源码 将Firefox插件导入Edge/Chrome中 前言 因为博主本人想在edge/chrome中使用cph-submit插件 vscode中cph实现一键将代码提交到Codeforces中但是只有firefox的插件另外两个比较麻烦nodejs还有版本问题。 写这篇文章有三个原因 网上暂且没找到firefox插件导入edge/chrome的方法 博主个人感觉这个debug过程比较有意义 也希望能帮助到其他人。 省流最终可用的版本如下直接下载解压开发人员模式导入edge插件即可 https://wwf.lanzout.com/iJ3Gl21r9vja导入的流程可以见本文章节**“插件导入edge/chorme中”**可能还有点小bug暂且没修好但是能用确信 导出火狐插件.xpi格式 在火狐浏览器中打开这个about:profiles就可以看到了 这就是你当前浏览器用户的存储文件夹 然后点击打开文件夹 点击extensions进去就可以看到你安装的插件的.xpi格式这边我只安装了一个名为cph-submit。 但是其实你可以通过修改时间来判断哪个是哪个大不了卸掉再装一下最新的那个 一般也就一两个 然后把这个文件复制出来找个空的目录放一下我将它重命名为cph-submit.xpi 右键解压到文件夹我用的360解压软件 这一步如果没法完成你可以修改后缀名为.zip然后再解压效果一样 因为解压完的文件夹不一定直接用 有些 Firefox 扩展可能需要进行一些代码修改才能在 Edge/Chrome 上运行需要修改 manifest.json 文件以符合 Edge/Chrome 的格式。 插件导入edge/chorme中 随后在edge/chrome浏览器中打开开发人员模式 进入edge://extensions/ 然后就会出现这些按钮 如果修改好了最终的插件版本就可以点击从“加载解压缩的扩展” 也就是我刚刚发的https://wwf.lanzout.com/iJ3Gl21r9vja这个解压缩后导入进去 随后应该就可以用了可以跳转到“完工阶段”查看效果 下面是错误示范以及修改过程 错误示范1 不能用.crx格式导入 不要将刚解压的文件夹的路径打包成为.crx格式大概率会G掉 如下所示 选择解压后的路径 随后就可以看到 不过.crx才是我们要用的.pem不需要 将.crx直接拖进浏览器中点击添加拓展 启动按键是灰色的这是错误示范所以不能这样 直接用解压好的就没下面这个问题 错误示范2 如果你修改的有问题 第一种情况初始化的时候就有问题那么一导入就是挂的 第二种情况运行到一半用到才有问题 会先正常显示然后在挂掉错误/重新加载两个一开始不显示 此时你其实可以点进去错误查看哪里错了然后修改 当然一般修改工作量也挺大的 可以交给GPT来改 这些错误是可以展开的直到报错后针对性修改 无关紧要的提醒 要是你不知道firefox和edge他们的manifest.json的差别其实你可以本地找一下edge拓展的源文件然后对比下 当然我都喂给了GPT让他帮忙修改 C:\Users\你的电脑用户名\AppData\Local\Microsoft\Edge\User Data\Default\Extensions有问题的话得删除插件 然后再从文件夹导入这个插件 修改过程 manifest.json 点进文件夹查看manifest.json如下 {name: CPH Submit,manifest_version: 2,homepage_url: https://github.com/agrawal-d/cph-submit,version: 1.6.0,description: Codeforces Submit add-on for Competitive Programming Helper.,background: {scripts: [dist/backgroundScript.js]},permissions: [*://localhost/*, *://codeforces.com/*, webNavigation],icons: {48: icon-48.png},browser_specific_settings: {gecko: {id: {5dd8fd6e-0733-41a7-abc4-e19fba703de9},strict_min_version: 49.0}} } 我将其修改为: manifest_version: 从 2 改为 3。 background: 从 scripts 改为 service_worker并增加 type: module。 action: 添加 action 部分用于定义插件的图标和默认标题。 host_permissions: 添加 host_permissions 和 optional_host_permissions 来管理插件的权限。 删除key字段: 不再包含key字段因为这是开发中的插件不是发布到商店的版本。 permissions: 保留 activeTab、webNavigation 和 scripting 权限。 host_permissions: 使用 host_permissions 来指定对 localhost 和 codeforces.com 的访问权限。 删除 optional_host_permissions: 移除 optional_host_permissions 字段因为它包含的权限已经在 host_permissions 中。 {name: CPH Submit,manifest_version: 3,homepage_url: https://github.com/agrawal-d/cph-submit,version: 1.6.0,description: Codeforces Submit add-on for Competitive Programming Helper.,background: {service_worker: dist/backgroundScript.js,type: module},permissions: [activeTab, webNavigation, scripting],icons: {48: icon-48.png},action: {default_icon: {48: icon-48.png},default_title: CPH Submit},host_permissions: [*://localhost/*, *://codeforces.com/*] }dict文件夹修改 还需要修改解压文件夹中的dict的backgroundScript.js和injectedScript.js 并不能从火狐直接移植到chrome/edge里面的browser API 需要修改为chrome API **Edge浏览器现在基于Chromium所以使用与Chrome相同的API。**二者可以共享但是与火狐不行因此只需要将代码中的 browser 替换为 chrome并使用 chrome.scripting.executeScript 来代替 browser.tabs.executeScript。 需要修改的地方可能还有 将 browser 替换为 chrome所有 browser API 调用替换为 chrome。 将 browser.tabs.create 修改为 chrome.tabs.create。将 browser.windows.update 修改为 chrome.windows.update。使用 chrome.scripting.executeScript 代替 browser.tabs.executeScript。将 browser.tabs.sendMessage 修改为 chrome.tabs.sendMessage。 backgroundScript.js backgroundScript.js 是浏览器扩展的背景脚本负责处理一些全局的后台任务例如 后台逻辑处理定时任务、全局事件监听器等。与服务器通信从服务器获取数据处理服务器响应。管理浏览器标签页创建、更新或关闭标签页。在不同页面间传递消息与内容脚本如 injectedScript.js进行通信。 在该扩展中backgroundScript.js 主要负责从服务器获取提交信息并在相应的 Codeforces 页面中自动提交代码。 代码在最终backgroundScript.js和injectedScript.js代码 injectedScript.js injectedScript.js 是注入到目标网页中的脚本负责与网页内容进行交互例如 操作网页的 DOM读取和修改网页中的元素例如表单字段。接收消息并执行操作从背景脚本接收消息并根据消息内容执行相应的操作。模拟用户行为自动填写表单、点击按钮等。 在该扩展中injectedScript.js 主要负责在 Codeforces 提交页面上自动填写表单并模拟用户点击提交按钮。 代码在最终backgroundScript.js和injectedScript.js代码 debug过程 个人修改的debug过程 解压文件夹中的dict的backgroundScript.js和injectedScript.js 先将其改为最简单的.js确保backgroundScript.js导入没问题 console.log(Service worker registered successfully);监听下控制台 看起来可以导入 逐渐加入代码 最终backgroundScript.js和injectedScript.js代码 最后backgroundScript.js修改结果如下 const config {cphServerEndpoint: new URL(http://localhost:27121/getSubmit),cfSubmitPage: new URL(https://codeforces.com/problemset/submit),loopTimeOut: 3000,debug: false };const log (...args) {if (config.debug) {console.log(...args);} };const isContestProblem (problemUrl) {return problemUrl.indexOf(contest) ! -1; };const getSubmitUrl (problemUrl) {if (!isContestProblem(problemUrl)) {return config.cfSubmitPage.href;}const url new URL(problemUrl);const contestNumber url.pathname.split(/)[2];const submitURL https://codeforces.com/contest/${contestNumber}/submit;return submitURL; };const handleSubmit async (problemName, languageId, sourceCode, problemUrl) {if (problemName || languageId -1 || sourceCode ) {log(Invalid arguments to handleSubmit);return;}log(isContestProblem, isContestProblem(problemUrl));chrome.tabs.create({ active: true, url: getSubmitUrl(problemUrl) }, (tab) {chrome.windows.update(tab.windowId, { focused: true });if (tab.id undefined) {log(No tab id to send message to, tab);return;}chrome.tabs.onUpdated.addListener(function listener(tabId, changeInfo) {if (tabId tab.id changeInfo.status complete) {chrome.tabs.onUpdated.removeListener(listener);chrome.scripting.executeScript({target: { tabId: tab.id },files: [/dist/injectedScript.js]}, () {chrome.tabs.sendMessage(tab.id, {type: cph-submit,problemName,languageId,sourceCode,url: problemUrl,}, () {if (chrome.runtime.lastError) {console.error(Error sending message:, chrome.runtime.lastError);} else {log(Message sent to tab with script);}});});}});}); };const mainLoop async () {let cphResponse;try {const headers new Headers();headers.append(cph-submit, true);const request new Request(config.cphServerEndpoint.href, {method: GET,headers,});cphResponse await fetch(request);} catch (err) {log(Error while fetching cph response, err);return;}if (!cphResponse.ok) {log(Error while fetching cph response, cphResponse);return;}const response await cphResponse.json();if (response.empty) {log(Got empty valid response from CPH);return;}log(Got non-empty valid response from CPH);handleSubmit(response.problemName, response.languageId, response.sourceCode, response.url); };setInterval(mainLoop, config.loopTimeOut);console.log(Service worker registered successfully);以及injectedScript.js修改结果如下 console.log(cph-submit script injected);const isContestProblem (problemUrl) {return problemUrl.indexOf(contest) ! -1; };const handleData (data) {console.log(Handling submit message);const languageEl document.getElementsByName(programTypeId)[0];const sourceCodeEl document.getElementById(sourceCodeTextarea);sourceCodeEl.value data.sourceCode;languageEl.value data.languageId.toString();if (!isContestProblem(data.url)) {const problemNameEl document.getElementsByName(submittedProblemCode)[0];problemNameEl.value data.problemName;} else {const problemIndexEl document.getElementsByName(submittedProblemIndex)[0];let problemName data.url.split(/problem/)[1];if (problemName 0) {problemName A;}problemIndexEl.value problemName;}console.log(Submitting problem);const submitBtn document.querySelector(.submit);submitBtn.disabled false;submitBtn.click(); };console.log(Adding event listener);chrome.runtime.onMessage.addListener((data, sender) {console.log(Got message, data, sender);if (data.type cph-submit) {handleData(data);} });完工阶段 点击competitive Companion将样例一键导入vscode中 随后在右侧编写代码 然后点击Submit提交代码 就成功在edge上先自动跳转到提交界面然后自动填写代码提交表单 最后自动跳转到这个界面提交成功 修改后的源码 上面其实也可以复制下来 我整理了可以直接用的版本 https://wwf.lanzout.com/iJ3Gl21r9vja 蓝奏云盘下载
http://www.dnsts.com.cn/news/137329.html

相关文章:

  • 洮南网站建设哪家好建网站和开发网站
  • 网站怎样做银联支付海南网
  • 渭南微信小程序网站建设软装设计网站有哪些
  • 做第一个网站什么类型网盘做网站服务器
  • 平台网站怎么做的谷歌seo优化
  • 创意网站开发企业教师网络培训心得体会
  • 网站建设 好公司广告传媒公司起名大全最新
  • 2015网站备案教程做网站怎么实现在线支付
  • 长春网站建设q479185700棒公司广告推广
  • 贵港北京网站建设怎么做pc端移动网站
  • 小型网站网站建设需要有口碑的装修设计公司
  • 深圳商城网站设计费用网络运营者应当按照网络安全等级
  • 设计素材网站大全网站莱州网监局
  • 建设银行 u盾不弹出网站金光华网站建设
  • 潍坊百度网站快速排名seo排名赚能赚钱吗
  • html网站建设购物案例做网站编辑需要具备的素质
  • 芜湖手机网站开发社群营销成功案例
  • 专业制作公司网站公司哪个网站注册域名好
  • 鄂州网站开发企业网站系统排名
  • wordpress企业建站教程 百度 下载在线作图软件
  • 专业的常州网站建设WordPress文章预览篇幅
  • 网站建设推广怎样找客户在那个网站做直播好赚钱吗
  • 360网站兼容模式网站程序设计
  • 珠江新城网站建设中铁建设集团有限公司贵州分公司
  • 中国造价工程建设管理协会网站建设小学瓯江小区网站
  • 网站数据丢失怎么办哪些网站可以做驾考试题
  • 个人网站可以放广告吗天辰建设网站
  • seo网站模板下载韩雪个人网站
  • 好品质高端网站设计wordpress英文版切换中文
  • 安徽省公路建设行业协会网站免费软件园