首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >更新后重新注入内容脚本

更新后重新注入内容脚本
EN

Stack Overflow用户
提问于 2013-08-28 10:31:47
回答 2查看 3.9K关注 0票数 9

我有一个铬的扩展,它向每个打开的标签注入一个iframe。我的background.js中有一个background.js侦听器,它按如下方式手动注入所需的脚本(下面是API的详细信息:http://developer.chrome.com/extensions/runtime.html#event-onInstalled ):

background.js

代码语言:javascript
运行
AI代码解释
复制
  var injectIframeInAllTabs = function(){
    console.log("reinject content scripts into all tabs");
    var manifest = chrome.app.getDetails();
    chrome.windows.getAll({},function(windows){
      for( var win in windows ){
        chrome.tabs.getAllInWindow(win.id, function reloadTabs(tabs) {
          for (var i in tabs) {
            var scripts = manifest.content_scripts[0].js;
            console.log("content scripts ", scripts);
            var k = 0, s = scripts.length;
            for( ; k < s; k++ ) {
              chrome.tabs.executeScript(tabs[i].id, {
                file: scripts[k]
              });
            }

          }
        });
      }
    });
  };

当我第一次安装这个扩展的时候,它工作得很好。当我的扩展更新时,我也想做同样的事情。如果我也在update上运行相同的脚本,我就不会看到一个新的iframe注入。不仅如此,如果我在更新后尝试向内容脚本发送消息,则所有消息都不会传递到内容脚本。我也看到其他人在SO (Chrome: message content-script on runtime.onInstalled)上也遇到了同样的问题。在chrome扩展更新之后,删除旧内容脚本和注入新脚本的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-28 14:58:48

当扩展更新时,Chrome会自动切断与后台页面对话的所有“旧”内容脚本,如果旧内容脚本确实试图与运行时通信,它们也会抛出异常。这是我丢失的那块。我所做的就是,在chrome.runtime.onInstalled in bg.js中,我调用与问题中发布的方法相同的方法。这将注入另一个与正确运行时对话的iframe。在某个时候,旧的内容脚本试图与失败的运行时对话。我捕捉到了这个异常,并删除了旧的内容脚本。还请注意,每个iframe都被注入到自己的“孤立世界”(隔离世界在这里解释:http://www.youtube.com/watch?v=laLudeUmXHM),因此新注入的iframe无法清除旧的挥之不去的iframe。

希望这对将来的人有帮助!

票数 6
EN

Stack Overflow用户

发布于 2013-08-28 10:55:48

没有办法“删除”旧的内容脚本(除了使用window.location.reload重新加载有问题的页面外,这是不好的)

如果您想在内容脚本中执行哪些代码更灵活,请在executeScript函数中使用" code“参数,它允许您传递带有javascript代码的原始字符串。如果您的内容脚本只是一个大函数(即content_script_function),它位于background.js中

在background.js中

代码语言:javascript
运行
AI代码解释
复制
function content_script_function(relevant_background_script_info) {
   // this function will be serialized as a string using .toString()
   // and will be called in the context of the content script page
   // do your content script stuff here...
}

function execute_script_in_content_page(info) {
  chrome.tabs.executeScript(tabid,
    {code: "(" + content_script_function.toString() + ")(" +
     JSON.stringify(info) + ");"});
}

chrome.tabs.onUpdated.addListener(
  execute_script_in_content_page.bind( { reason: 'onUpdated',
                                         otherinfo: chrome.app.getDetails() });

chrome.runtime.onInstalled.addListener(
  execute_script_in_content_page.bind( { reason: 'onInstalled',
                                         otherinfo: chrome.app.getDetails() });
)

其中relevant_background_script_info包含有关背景页面的信息,即它是哪个版本,是否存在升级事件,以及函数被调用的原因。内容脚本页仍然维护其所有相关状态。这样,您就可以完全控制如何处理“升级”事件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18495615

复制
相关文章
cocos2d-js 在线更新代码脚本 动态更新脚本程序 热更新 绕过平台审核 不需重新上架
2014年8月15日补充 cocos2d-js 3.0 rc0 的AssetsManager有缺陷,有一些注意点:(可以阅读源代码发现) 1、旧manifest中有,但新manifest中没有的文件(Assets),会被删除;旧的没有,新的有,会正常下载。 2、groupversion暂时没什么意义,并无法达到这位博主所谓的增量更新:https://github.com/faint2death/cocos2d-js/blob/master/assetsmanager.md。暂时只在版本比较中用到,并没有在计
用户1258909
2018/07/03
1.7K0
Sql注入脚本
---- 自增脚本 # coding:utf-8 import requests import datetime import time # 获取数据库名长度 def database_len(
wuming
2021/01/21
7940
git更新脚本
说明 此脚本用于更新git仓库,主要用于使用ssh克隆的仓库,使用https克隆或者直接下载的不可使用此脚本进行更新,编写此贴用于保存脚本以供后用 Linux平台 Linux平台下的脚本使用的是bash shell脚本进行编写的 #! /bin/bash ######################################## #Usage: ./update comment "msg" ######################################## echo st
impressionyang
2021/05/06
8120
从SQL注入到脚本
翻译:https://pentesterlab.com/exercises/from_sqli_to_shell/course
顾翔
2022/09/23
2.1K0
从SQL注入到脚本
Webview动态注入js脚本
在webview加载完成后,给所有的img便签加上本地点击事件 /** 要注入的js代码 function(){ var objs = document.getElementsByTagName('img'); for(var i = 0; i <objs.length; i++) { objs[i].onclick = function() {window.toolbox.openImage(i,this.src); } }; **/ // 注入js函数监听 public void
战神伽罗
2019/07/22
7.5K0
sql-labs-less8|SQL注入,脚本注入
此篇为sql-labs系列less-8,这一关使用脚本盲注,使用的sql语句跟第五关差不多,脚本写的比较烂,我也是第一次写,很基础,如果你也不会写的话可以参考一下。
TenG
2020/10/28
1.2K0
sql-labs-less8|SQL注入,脚本注入
idea remove module后重新打开项目
Ctrl+Shift+ALT+S的快捷键 选择modules 点击 加号+
MickyInvQ
2020/09/27
1.6K0
idea remove module后重新打开项目
加密解密vbs脚本内容
首先,我们都知道,VBS代码可以直接被看到的, 不知道VBS的是什么,度娘会告诉你的。 下面这个程序可以对VBS代码进行简单的加密,原理灰常简单, 1.读取源文件的所有代码 1.读取源文件的所有代码 2.计算Asc值 3.写入,Execute用Chr还原后的代码。 废话不多说 上代码 代码: ---- 加密: <pre class="prism-highlight prism-language-bash">On Error Resume Next  Set argv = WScript.Argument
孤鸿
2022/09/23
1.1K0
CtfShow之SQL注入-持续更新
CtfShow之SQL注入 web171 查询语句 //拼接sql语句查找指定ID用户 $sql = "select username,password from user where userna
用户2616264
2023/05/18
3610
Android 13 SDK更新内容
或者是自己在开发过程中碰见了相关的问题,然后才发现是新旧版本之间的差异造成的(印象最深刻)。
zinyan.com
2022/12/07
2.1K0
php去重后重新排键值
因为我们已经移除了一些元素,因此数组看起来不是正常的序列。比如我们可能会得到:array(0=>’A’,2=>’B’,5=>’C’);。在某些情况下,这不是一个问题,但是如果你需要数组的键值保持数字的序列,你可以使用一到两种方法解决键值乱序的问题。
黄啊码
2020/05/29
1.8K0
Python自动更新脚本
本脚本主要针对python2.6升级至python2.7.12,并且解决了升级后不能使用yum的问题。添加了ipython功能
py3study
2020/01/07
1.2K0
WordPress 安全复制内容保护和内容锁定 2.8.1 SQL 注入
# 软件链接:https://downloads.wordpress.org/plugin/secure-copy-content-protection.2.8.1.zip
Khan安全团队
2022/03/03
7280
WordPress REST API 内容注入漏洞分析
0x00 漏洞简述 1. 漏洞简介 在REST API自动包含在Wordpress4.7以上的版本,WordPress REST API提供了一组易于使用的HTTP端点,可以使用户以简单的JSON格式访问网站的数据,包括用户,帖子,分类等。检索或更新数据与发送HTTP请求一样简单。上周,一个由REST API引起的影响WorePress4.7.0和4.7.1版本的漏洞被披露,该漏洞可以导致WordPress所有文章内容可以未经验证被查看,修改,删除,甚至创建新的文章,危害巨大。 2. 漏洞影响版本 Word
Seebug漏洞平台
2018/03/29
3.4K0
WordPress REST API 内容注入漏洞分析
数据获取脚本重大更新
之前很多脚本都有从高德获取,某个路径(公交地铁线路、OD导航等等)。由于我自己不太常用(是的,目前的状态是既不用画图,也不用做项目,平时看书写字、想事情),所以也没有体会到最后想导进ArcGIS的艰难(特别是一条路径一条路径地导入)。
Sidchen
2021/04/13
5320
数据获取脚本重大更新
JDK21更新内容:SequenceCollection
Sequenced Collections是Java中的一个新特性,它是通过JEP 431引入的。Sequenced Collections是一种新的集合类型,它提供了一种有序的、线程安全的集合实现。它的目标是提供一种高效的、可扩展的有序集合,以满足在多线程环境下处理大量数据的需求。
程序员朱永胜
2023/09/25
4980
【XSS漏洞】浅析XSS脚本注入点
今天跟大家分享的课题是,当我们进行XSS脚本注入时,在不同的注入点进行注入,会产生不同的结果,那么这到底是为什么呢?不同节点,我们又该用什么针对性的插入方法呢?
一名白帽的成长史
2019/10/08
2.9K0
【XSS漏洞】浅析XSS脚本注入点
Mysql布尔注入自动化脚本
各种原因,可能导致sqlmap跑不出来,这个时候,自己写脚本就派上用场了,这里写了个简单的脚本,脚本内容是跑user,需要可以自己改。
Jumbo
2019/05/07
1.1K0
Mysql布尔注入自动化脚本
点击加载更多

相似问题

Chrome扩展内容脚本在升级或安装后重新注入

61

从内容脚本更新注入的iframe

11

Chrome扩展:注入后如何删除内容脚本?

21

注入多个内容脚本

20

Chrome扩展页面的动态重载--重新注入内容脚本

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文