Chrome Ext 和 JQuery 资源必须列在 web_accessible_resources 清单键中,以便由扩展程序外部的页面加载

2023-11-30

我有 Chrome 扩展,可将 jquery-1.8.3.min.js 和 jquery-ui.js 和 jquery-ui-base64.css 加载到内容脚本中。
我在内容脚本中使用它们NOT后台脚本。
我设置了配置(我认为)正确,但是当我在控制台中看到错误时 我可以很好地看到窗口中的图标,但我仍然在 Chrome 窗口中收到错误。
这是使用版本 23.0.1271.95 m 的 chrome 中的错误吗?

这是清单:

{
"name":"Sample communication from content to background",
"description":"This is a sample for Simulating communication from content to background",
"manifest_version":2,
"version":"2",
"background":{
    "scripts":["background.js"]
},
"content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["jquery-1.8.3.min.js","jquery-ui.js","client.js"],
      "run_at":"document_end",
      "all_frames": true,
      "css":["jquery-ui-base64.css"]
    }
  ],
"web_accessible_resources": [
    "client.js","jquery-1.8.3.min.js","jquery-ui.js","jquery-ui-base64.css",
    "images/ui-bg_flat_0_aaaaaa_40x100.png",
    "images/ui-bg_flat_75_ffffff_40x100.png",
    "images/ui-bg_glass_55_fbf9ee_1x400.png",
    "images/ui-bg_glass_65_ffffff_1x400.png",
    "images/ui-bg_glass_75_dadada_1x400.png",
    "images/ui-bg_glass_75_e6e6e6_1x400.png",
    "images/ui-bg_glass_95_fef1ec_1x400.png",
    "images/ui-bg_highlight-soft_75_cccccc_1x100.png",
    "images/ui-icons_222222_256x240.png",
    "images/ui-icons_2e83ff_256x240.png",
    "images/ui-icons_454545_256x240.png",
    "images/ui-icons_888888_256x240.png",
    "images/ui-icons_cd0a0a_256x240.png"
  ],
"permissions": [ 
        "unlimitedStorage",
        "http://*/",
        "<all_urls>",
        "tabs"
   ]
}

在 jquery-ui-base64.css 中,我将所有图像 url 加载更改为如下所示:

 url(chrome-extension://__MSG_@@extension_id__/chrome-extension://__MSG_@@extension_id__/images/ui-bg_flat_75_ffffff_40x100.png) 
url(chrome-extension://__MSG_@@extension_id__/chrome-extension://__MSG_@@extension_id__/images/ui-bg_highlight-soft_75_cccccc_1x100.png)

但我仍然收到错误:

Denying load of chrome-extension://mmoccjinakdjcmhjdjghhjnihbfkkgkp/chrome-extension://mmoccjinakdjcmhjdjghhjnihbfkkgkp/images/ui-bg_flat_75_ffffff_40x100.png. Resources must be listed in the web_accessible_resources manifest key in order to be loaded by pages outside the extension.
Denying load of chrome-extension://mmoccjinakdjcmhjdjghhjnihbfkkgkp/chrome-extension://mmoccjinakdjcmhjdjghhjnihbfkkgkp/images/ui-bg_highlight-soft_75_cccccc_1x100.png. Resources must be listed in the web_accessible_resources manifest key in order to be loaded by pages outside the extension.

图像位于图像目录中,我可以在我创建的 JQuery 对话框中看到图标。


EDIT 1)

以下代码适用于所有与背景\扩展相关的 DOM 和 css

清单.json

定义了所有权限的简单 json 结构

{
"name": "My extension",
"version": "1.0",
"permissions": [
    "http://*/*", "tabs", "https://*/*"
],
"browser_action": {
    "default_icon": "icon.jpg",
    "default_popup":"popup.html"
},
"manifest_version": 2
}

弹出窗口.html

浏览器操作弹出窗口的链接样式表

<html>
<head>
<link rel="stylesheet" href="styles.css"></link>
</head>
<body>
</body>
</html>

样式.css

使用 url() 作为图像路径

body{
    width : 500px;
    height: 500px;
    background-image: url('img/icon.jpg');
}

如果仍然失败请告诉我

enter image description here

EDIT 2)

用于通过内容注入图像

解决方案一)

Using 这个转换器,您将图像转换为 base64 字符串,然后可以将它们用作

{ 背景图像: url(数据:image/png;base64,iVBORw ........ };

解决方案b)

以下代码将不起作用,因为

{
background-image:url(chrome.extension.getURL('img/icon.jpg'));
}

chrome.extension.getURL()对于 css 来说是未定义的。

所以,我使用js来注入背景图像\任何图像URL(因为它们有动态URL)

清单.json

简单的 json 结构,为内容脚本和 CSS 定义了所有权限

{
"name": "My extension",
"version": "1.0",
"permissions": [
    "http://*/*", "tabs", "https://*/*"
],
 "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js":["content.js"],
      "css": ["styles.css"]
    }
  ],
"web_accessible_resources": [
    "img/icon.jpg"
],  
"manifest_version": 2
}

内容.js

作为一个简单的用例,准备了一个 div 并添加了背景图像属性

var newdiv = document.createElement('div');
newdiv.setAttribute("id", "moot450");
document.body.appendChild(newdiv);
document.getElementById('moot450').style.backgroundImage = "url(" + chrome.extension.getURL('img/icon.jpg') + ")";

样式.css

注入另一个 css 来精炼注入的 div

#moot450{
    position:absolute; 
    width:500px;
    height:500px;
    /*background-image:url(chrome-extension://faaligkhohdchiijdkcokpefpancidoo/img/icon.jpg);*/
}

OUTPUT

注入后从 Google Page 截取的屏幕截图

enter image description here

如果您需要更多信息或者失败,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome Ext 和 JQuery 资源必须列在 web_accessible_resources 清单键中,以便由扩展程序外部的页面加载 的相关文章

  • Chrome 扩展:检查后台脚本是否正在运行

    我有一个后台脚本 它使用 setInterval 命令定期执行网络请求 我想知道后台脚本是否可以检测操作系统是否进入睡眠或待机状态 以便我可以调整恢复后台脚本时显示的计时器 我了解 setInterval 计时器在睡眠期间根据此答案被暂停
  • MVC 对元素组强制进行 jQuery 验证

    我正在使用 MVC 4 设计的表单具有多个 DIVS 每个 DIVS 中有许多元素 我的目标是在用户填写字段时打开 关闭 DIVS 但是 我想对每个 DIV 而不是整个表单使用不显眼的验证 不单独检查每个元素是否可能 也许使用 DIV ID
  • 如何从 google chrome 主题运行 JS 代码

    Google Chrome 主题定义于Chrome 开发者文档 https developer chrome com extensions themes如下 主题是一种特殊的扩展 它改变了 浏览器看起来 主题像常规扩展一样打包 但他们 不包
  • Jquery Draggable - 如何动态创建一个新的可拖动 div,然后可以拖动?

    我正在使用 jquery 创建一个可拖动和可放置的日程安排器 当作业从未分配的列拖到小时时间段中时 原始的可拖动项目将被删除 并且新的 div 会被放置到页面中 其中包含作业详细信息 这个新创建的 div 代码块包含使其可拖动的所有参数 当
  • 如何从 Chrome 扩展中获取 javascript 重的页面

    我正在开发一个扩展程序 用于获取用户可能在网站上访问的页面 我的扩展使用 jQuery get 来获取页面 这对于像 amazon com 这样的网站来说是正确的 但是 如果用户登录 gmail 并且我尝试获取其他一些页面 例如 帐户设置
  • 有没有好的、轻量级的、具有良好 UI 的网络日期/时间选择器?

    几个愿望 如果它是基于 jQuery 的 那就最好了 如果它专注于简单的用户界面而不是养眼的东西 更好的 如果它既是日期又是时间选择器 好的 我应该提到的是 我已经查看了使用 Google 可以找到的大多数可用选项 问题不在于官方 jQue
  • 什么是 .pem 文件以及如何使用它?

    我正在设计一个新的 chrome 扩展 当我打包它时 我得到 2 个文件 crx文件和一个 pem file 我想在我的服务器 共享 和 Chrome 网上应用店上分发我的扩展程序 您能告诉我什么是 pem 文件以及如何使用它吗 我找不到有
  • Chrome 扩展程序网址匹配模式:为什么规则不适用于 Google.com?

    我正在制作一个扩展来自定义 Google 的主页背景 所以我在清单中编写了一些匹配规则 如下所示 content scripts matches https www google com http www google com js sta
  • 使用键盘快捷键捕获选定的文本

    我创建了一个 Chrome 扩展程序 它添加了一个上下文菜单项 用于在 4 个商店中搜索页面上选定的文本 从这个意义上说 该扩展工作正常 但是用户要求我也实现键盘快捷键 到目前为止 我有一个捷径可以工作 但我没有运气捕获选定的文本以进行搜索
  • createHTMLNotification() 替换

    我创建了一个 Chrome 扩展程序 其中使用createHTMLNotification 在所有内容之上显示一个窗口 然而 从 Chrome 28 开始 谷歌决定放弃createHTMLNotification 完全 为什么 谷歌 为什么
  • JQuery UI Selectable 插件:当 div 溢出时使滚动条不可选择

    我有一个 div 设置为overflow auto 该 div 的内容是可选择的 使用 jQuery UI 当 div 溢出并出现滚动条时 滚动条本身变为可选择状态 因此滚动效果不佳 在 FF Chrome 中 我可以滚动 div 但我得到
  • JQuery UI - 根据其他时间选择器值在时间选择器中设置 minTime

    我正在尝试设置minTime of my End Time timepicker根据我在中选择的内容开始时间 timepicker 我有这个 基于适用于常规的东西datepicker 但它不起作用 confirmed time start
  • Ajax 表单从 Jquery 对话框内重定向页面

    我在部分视图中有一个 jquery 对话框 model JQueryDialogPoc Models FeedBack using Ajax BeginForm GiveFeedback Home null new AjaxOptions
  • Chrome 扩展程序中后台页面和弹出页面之间的通信

    我目前正在尝试为 Google Chrome 编写一个扩展 可用于上传文件 有两个页面 后台页面和弹出页面 单击多功能栏右侧的图标时会出现弹出页面 您可以使用标准 HTML 指定要上传的文件
  • Draggable 正在阻止触摸事件

    我正在尝试使用拖动来来回移动 div 这部分工作正常 直到 div 具有可滚动内容 由于滚动条 这在桌面上不是问题 但在触摸设备上会出现问题 由于触摸事件与拖动事件冲突 我无法滚动内容 我尝试创建一个条件来检测拖动是否水平方向多于垂直方向
  • jQuery DatePicker 在可滚动 div 中时不随 HTML 内容移动

    我的表单大小受到限制 并且溢出样式设置为滚动 该表单包含许多 DatePickers 如果我打开其中一个 DatePicker 然后滚动面板 使用滚轮将焦点保持在 DatePicker 上 使其保持打开状态 DatePicker 不会随其附
  • jquery水平滚动

    我想使用 jquery UI 的滚动条 http jqueryui com demos slider side scroll http jqueryui com demos slider side scroll 但是通过鼠标悬停事件 我到处
  • 带有 jQ​​uery 日期选择器 OnTextChanged 的​​文本框未触发

    我有一个带有 OnTextChanged 事件的 asp textbox 当从绑定到它的 jQuery 日期选择器中选择新日期时 我想触发该事件 但在选择日期时 OnTextChanged 永远不会触发 如果我 手动 更改文本 它会触发 但
  • Jquery UI 日期选择器 设置默认日期

    我使用 jQuery UI 作为日期选择器 我想在字段中显示当前日期作为默认值 以下是我的代码 请帮助 From Date
  • “Chrome 扩展抛出 CRX 文件错误“CRX_REQUIRD_PROOF_MISSING”

    我有 Chrome 扩展程序并创建crx使用开发者模式的文件 我上传了crx文件到某个内部 url www xyz com internal crx 每当我尝试使用 URL 安装扩展程序 不在开发人员模式下 时 都会抛出错误包无效 CRX

随机推荐