Chrome扩展注入的Iframe不能访问Chrome browserAction或chrome.tabs或AngularJS
我有一个Chrome扩展名,可以单击浏览器操作,可切换侧边栏.侧边栏包含一个带有局部(Chrome扩展)源的iframe.我认为IFRAME中的页面将被视为一个本地Chrome扩展文件,该文件具有对Chrome API的开放访问等等.但是,我在 Web console中一直在收到以下错误: undureck typeError:无法阅读不确定的的属性' typeError:无法读取未定义的的属性'查询' 我如何获得它,以便注入上下文脚本可以访问本地chrome环境? 代码下面: sidebar.js: var myApp = angular.module('PlaceMates', []); myApp.service('pageInfoService', function() { this.getInfo = function(callback) { var model = {}; chrome.tabs.que
0 2024-02-24
编程技术问答社区
仅对整个网站使用AJAX,无论是否最佳
我有一个模板结构,其中有一个HTML文件,其中相关的HTML&JS文件加载(使用AJAX). 根据用户的活动加载部分(页面永远不会重新加载哪种适合用户体验). 即. 用户单击菜单是"配置文件",这是原因: jquery.load 方法用于加载文件"/some/path/profile.html". jQuery.getScript 在 .load()回调中使用,以包括js文件,例如``some/path/profe coper.js''配置文件页面的活动处理程序以及相关的业务逻辑. 这是对应用程序的每个菜单项/部分发生的,例如"配置文件","文件","仪表板"等. 它运作迅速,但我不确定这是否是执行此操作的最佳方法. 因此,如果用户两次单击"配置文件"按钮,浏览器会浏览器 首先清除较早的加载资源(profile.html,profile.js) 重新加载? 当用户访问新部分时,访问"配置文件"后说"仪表板", 加载之前,浏览器再次清除配置文
0 2024-01-22
编程技术问答社区
在Chrome扩展中对Facebook.com的POST请求失败了
我有一个镀铬扩展名,它在每个页面上都带有一些数据. 问题是,Facebook阻止了AJAX请求,因此: 拒绝连接到 " url_here",因为它 违反以下内容安全策略指令:" Connect-SRC https:// .facebook.com http:// .facebook.com https:// .fbcdn.net http:// .fbcdn.net *.facebook.net .spotilocal.com: https:// .akamaihd.net ws ws:// .facebook.com:* http://http://gakamaihd.net". 如何在该页面上将AJAX调用发送到我的服务器? 我是制作镀铬扩展的新手,请告诉我是否有可能.我正在使用内容脚本.不确定是否可以使用背景页面来完成某件事. 另外,我可以在使用内容脚本时使用某个地方将数据存储在Chrome扩展名中? 解决方案 当页面的CSP干扰时,执行交叉原
从chrome扩展内容脚本中选择<选择>的<选项>。
我无可救药地试图从Chrome Content脚本中激活change()事件. 我已经过去了网站和Google帖子,但仍然没有任何作用. 这是我要实现的描述; 考虑以下网页(可通过 http://www.gilzu.com/tff/select.html 应该有人友善地提供帮助): Untitled Page $(document).ready(function () { $('#woot').die('change'); $('#woot').live('change', f
如何将数据从内容-脚本传递到页级?
我正在将所有JS代码注入头版,但是它需要UI和其他内容的图片,只能在Chrome.extension.geturl的帮助下导入,并且只能从Content-Script中调用,所以我'找到了大量的建议如何将数据传递到内容页面,而对如何传递数据,这根本不可能吗? 我的代码现在看起来像这样: 我的JS代码将注入其他代码: var Content = {}; $(document).contentReady = function(content) { Content = content; $(document).ready(function () {/*cool stuff here, that require content*/}); } var event = new CustomEvent('LoadContent'); window.dispatchEvent(event); content-script: document.querySele
0 2024-01-11
编程技术问答社区
用css或jquery覆盖!"重要"。
(这是在Chrome扩展中使用的内容脚本) 我需要覆盖网页已标记为!important的一些CSS属性.这可能吗? 例如,如果我想摆脱很重要的标记的边框: $(".someclass").css('border','none'); //does not work 解决方案 您去这里: $( '.someclass' ).each(function () { this.style.setProperty( 'border', 'none', 'important' ); }); 实时演示: http://jsfiddle.net/gtr54/ /p> 元素的style对象的.setProperty方法使您可以传递代表优先级的第三个参数.因此,您将以自己的!重要的价值覆盖重要的价值.据我所知,不可能使用jQuery设置!重要的优先级,因此您唯一的选择是内置.setProperty方法. 其他解决方案 您也可以做到这一点: $(".so
2 2024-01-11
编程技术问答社区
在YouTube的浏览器导航上,Chrome扩展程序无法加载
假设我到达YouTube视频页面时会加载一个扩展名.我注意到,当一个使用Chrome按钮来回导航时,扩展很可能不会加载. 作为一个例子,我有2个文件,清单: { "name": "back forth", "version": "0.1", "manifest_version": 2, "description": "back forth", "permissions": ["storage", "*://www.youtube.com/watch*"], "content_scripts": [ { "matches": ["*://www.youtube.com/watch*"], "js": ["contentscript.js"] } ] } 和contentscript alert("loaded"); 在来回导航时,
0 2023-12-25
编程技术问答社区
$x()函数没有在Chrome扩展程序、内容脚本内定义
$x("//a[contains(@href,'.jpg')]"); 从开发人员工具命令提示符中按预期工作.但是,当在扩展内容的内容中,我会得到一个'$x is not defined'. 为什么在内容订阅中不可用,或者是否有一种特殊的方式可以在内容订阅/chrome扩展中访问它? 我在Debian上使用Chrome 22. 解决方案 $x()不是网页或内容脚本运行时环境的一部分.它是一种工具,是 Chrome's DevTools . 要在内容脚本中使用XPath,您需要以正常方式进行操作,DevTools便利的快捷方式不可用. 您的代码看起来像这样: var jpgLinks = document.evaluate ( "//a[contains(@href,'.jpg')]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, nul
2 2023-12-23
编程技术问答社区
webpack chrome扩展在content_script上下文中的块状加载
我正在以AMD方式开发Chrome扩展.作为JS Bundler,我正在使用WebPack.我已经提取了几个条目,WebPack为它们构建了几个块.我的目标是在Content_Script的背景下实现块加载.默认行为 webpack_require .确保函数将使用适当的SRC创建一个新的脚本标签,并将其注入DOM: __webpack_require__.e = function requireEnsure(chunkId, callback) { /******/ // "0" is the signal for "already loaded" /******/ if(installedChunks[chunkId] === 0) /******/ return callback.call(null, __webpack_require__); /******/ /******/ // an array mean
6 2023-12-01
编程技术问答社区
在chrome扩展中,如何使用内容脚本来注入一个Vue页面
我正在尝试实现JSON查看器Chrome扩展名.我已经使用Vue( http://treedoc.org )实现了观众.现在问题是如何将VUE页面注入Chrome扩展内容脚本. 我找到我找到这篇文章和此 override.0e5e7d0a.js ",该文件尚不清楚. 解决方案 最近,我正在使用VueJS开发Chrome扩展,并且需要将整个Vue应用程序注入特定网页(即Google.com)的要求相同,但可悲的是Vue-Router不起作用. 我使用此样机板可以轻松地使用最小的更改. 使用此样板创建VUE项目后,您需要将SRC/popup/popup.js更新到网页中的VUE应用程序. ... const div = document.createElement("div") document.body.insertBefore(div, document.body.firstChild); new Vue({ el: div, render:
0 2023-11-25
编程技术问答社区
用Chrome的用户脚本劫持一个变量
我正在尝试使用Userscript更改页面中的变量. 我知道在源代码中有一个变量 var smilies = false; 从理论上讲,我应该能够像这样更改: unsafeWindow.smilies = true; 但行不通.当我尝试在不劫持的情况下提醒或记录变量时,我会发现它是未定义的. alert(unsafeWindow.smilies); // undefined !!! 编辑:如果更改任何内容,我正在使用Chrome ... /a>说: 内容脚本在一个称为孤立的特殊环境中执行 世界.他们可以访问将其注入到的页面的DOM, 但没有页面创建的任何JavaScript变量或功能. 它看起来像每个内容脚本,好像没有其他JavaScript 在正在运行的页面上执行. 这是关于Chrome Extensions的,但我想这也是使用用户标记的故事吗? 谢谢您,Rob W.因此,需要它的人的工作代码: var scriptText
0 2023-11-11
编程技术问答社区
设置为`run_at``document_start`的Chrome扩展程序运行速度过快?
编辑:我的Chrome浏览器出现了问题,并与脚本发生冲突,完整的重新安装消除了任何问题源.如果我碰巧发现是什么原因引起的,我将在此处包含它. edit2:只是让任何人在2017年阅读此书,知道我没有忘记这一点,自从我以前的编辑以来,我从未遇到过这个问题. edit3:是2019年,到目前为止我再也没有遇到这个问题. 我一直在学习如何创建一个简单的Chrome扩展名,即用户标题端口.该脚本与TampermonKey完美搭配设置run at to document-start,从一开始就需要捕获的所有必要事件都被捕获. 但是,当我在Chrome扩展程序中设置相同的设置时,我发现相同的运行设置比Tampermonkey的设置更快,这会导致第一个函数失败:(Uncaught TypeError: Cannot call method 'appendChild' of null.),因为它试图将脚本元素附加到head部分,直到0.010之后才存在. 到目前为止,我的肮
文本在谷歌群组中被设置,消息后体却不显示?
我的扩展名(用内容脚本)写信给Google组"新主题"页面的主题和消息主体. 更新的主题显示得很好;它是输入类型"文本"的,因此一切都很容易.但是,主体是代表文本框的Div,当我写信时,该更新不会显示: 我尝试首先将重点放在现场,但没有效果. 解决方案 您如何尝试设置文本? 显示您的代码! 最初 设置contenteditable元素的典型方法是这样: var messageBody = document.getElementById ("p-b-0"); messageBody.innerHTML = ' Line 1. Line 2. '; 请注意,使用innerHTML擦除之前的文本框上可能发生的任何东西 - 对于此问题的情况可以. (有关更高级的更改/编辑,请加载jQuery并使用它来添加/删除/替换编辑框中的节点.但是,这是用于其他搜索和/或问题的主题.)
为什么在chrome扩展中无法加载SVG?
我使用Chrome扩展名将一些HTML注入网站.在该代码中,我包括一个SVG.但是当我加载网站时,我会得到 Failed to load resource: the server responded with a status of 404 (Not Found) http://stackoverflow.com/questions/SVG/home-outline.svg 我的所有SVG文件都位于一个名为SVG的文件夹中.当我加载其他文件时,我正在加载SVG文件.为什么我的图像不加载? 我尝试通过CSS背景添加SVG时得到相同的结果. 解决方案 在注入的代码中,相对路径(例如"SVG/home-outline.
6 2023-10-05
编程技术问答社区
启用选项的内容-脚本的Chrome扩展没有背景页面?
我正在为Google Chrome制作内容脚本扩展名,它为网站的页面添加了功能.我想添加几个选项,实际上不是很大,我只需要两个字符串(其中一个都是敏感的用户数据). 来自这个答案,我假设我需要一个背景页面,我宁愿不添加扩展名 - 我不希望它增加不必要的体重. 我真的需要一个背景页面,或者我可以没有它的选项页面(我可以使用哪个存储)? ? 解决方案 更新 从Chrome 20开始,您现在可以使用存储API ..... http://code.google.com/chrome.com/chrome/extensions/storage/storage.htorage.htore.html 旧方法 我要做的是创建一个指向我扩展程序中一个页面的iframe,该页面具有一个脚本,该脚本从本地存储中获取我需要的设置,然后将其发送给其父级,然后在内容脚本中得到的消息,然后将其发送给.这是一个废话的解释,该代码说得更好;)....... 内容脚本 // cre
10 2023-09-30
编程技术问答社区
替代方案:Bootstrap JS在shadow dom内不工作
我试图创建一个用于封装内容脚本元素的阴影dom,然后应用引导样式,并在阴影dom内进行Bootstrap模态作品,以便它可以从网页样式和脚本中封装自身.它成功地显示了内容,但是Bootstrap JS脚本不起作用. 我尝试将所有样式和脚本文件注入阴影DOM中. Bootstrap样式工作,Bootstrap脚本不起作用 $(#id) //the usual way to access a id using jQuery parentofShadowtree.shadowRoot.querySelector('#id') //to select a element inside shadow DOM 我认为错误是因为Bootstrap脚本无法像往常一样访问元素. 我相信,由于访问元素的方式已经改变,因此这些脚本文件不起作用. 我对吗?有没有办法克服这个问题 解决方案 如果您仍然想使用Shadow dom,那么解决方法是将Bootstrap UI元素放入
20 2023-08-31
编程技术问答社区
Chrome扩展代码 vs 内容脚本 vs 注入的脚本
每当加载新页面时,我都在尝试使我的Chrome扩展程序运行init(),但是我很难尝试了解如何执行此操作.据我了解,我需要在Background.html中进行以下操作: 使用chrome.tabs.onUpdated.addListener()检查页面何时 更改 使用chrome.tabs.executeScript运行脚本. 这是我拥有的代码: //background.html chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { chrome.tabs.executeScript(null, {code:"init();"}); }); //script.js function init() { alert("It works!"); } 我也想知道init()函数是否可以访问我的其他JS文件中的其他功能? 解决方案 Chrome扩展中的JavaS
50 2023-08-22
编程技术问答社区
如果从后台发送响应,在内容脚本中执行一个函数
对于我的Chrome扩展程序,我正在尝试将选定的文本发布到PHP网页上.在此网站上解决的问题( 问题是将触发器从背景获取到内容脚本.我已经以另一种方式收到了一条消息,因此需要使用该函数(响应).但是,在" sendmessage"之外,我无法听响应.cmd.在" sendmessage"中,我无法获得响应.cmd触发函数.除了从背景脚本发送所有新消息外,还有解决方案吗? 我指的代码: 背景.js chrome.extension.onMessage.addListener(function(request, sender, sendResponse) { if(request.cmd == "createSelectionMenu") { sendResponse({cmd: "saveText"}); //Do things } }); content_script.js chrome.extension.sendMessage({ cmd: "
12 2023-08-09
编程技术问答社区
根据用户导航更新注入到Chrome扩展中DOM的React组件
我有一个简单的React组件将DOM注入我的Chrome扩展程序中的内容脚本,在不是我的网站上运行. 我想更新(重新渲染)用户在网站上进行的每个导航(URL更改)上的组件注入我的React应用程序. 我认为React路由器应该是这项工作的最佳工具. 但是,它似乎不起作用. 我找到了一些相关问题: this , this ,为我工作. 我尝试将唯一的key添加到Route(例如使用useLocation或简单地使用location.href甚至Math.random())进行测试) - 但这些都没有进行组件更新. 很奇怪的是,如果我附上onclick将状态更改为我的组件中的div,它确实会成功地使组件重新渲染并更新. 我的内容脚本看起来像这样: import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; const myDiv = docume
执行我在Chrome扩展上的自动填充Javascript,点击
我有一个工作的JavaScript,该JavaScript提示用户第一次获取其电子邮件和密码;之后,每当用户重新访问该网页时,它会自动填充用户名和密码.在我的html代码中,我只需要调用我的checkcookie()函数即可在jsfiddle.net上执行此操作. 现在,我想创建一个Chrome Extension,单击运行Autofill JS.我有这些代码,但是单击扩展,我没有输出.任何人都可以建议我做错了什么. // manifest.json { "manifest_version": 2, "name": "Auto-fill Passwords", "description": "This extension autofill password on click.", "version": "1.0", "browser_action": { "default_icon": "icon.png" },
14 2023-04-26
编程技术问答社区