2 vainquit vainquit 于 2018.05.12 01:00 提问

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个回答

showbo
showbo   2018.05.12 11:40
已采纳

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

qq_41189681
qq_41189681   2018.05.12 08:53

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

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

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

a718089112
a718089112   2018.05.12 08:25

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

vainquit
vainquit 可是注入b.js的代码不是file:"b.js"嘛。。这样就无法引用函数了
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
jquery a.js调用b.js的方法
在a.js中加入  $(function () {     //引入 b.js文件     var js_element = document.createElement("script"); //这句是创建一个script标签     js_element.setAttribute("type", "text/javascript"); //脚本用的是javascript     js
一个B.js获取另一个A.js的方法,只要将在html页面中的载入顺序将A.js放在B.js前即可
-
JS中跨页面调用变量和函数(例如a.js 和 b.js中互相调用)
在项目开发过程中,也许你会遇这样的情况。在某一Js文件中需要完成某一功能,但这一功能的大部分代码在另外一个Js文件中已经完成了,自己只需要调用这个方法再加上几句代码就可以实现所需的功能。我们知道,在html中,利用引入的两个js是不可以相互调用的。那么该如何解决呢?当然,你可以将代码通通copy过来,也许你并不喜欢这样。    例如有这样一个html,里面有一个按钮,当按下时调用b.js文件
es6 Babel转换器笔记
配置文件 .babelrc基本配置书写 { "presets":[], "plugins":[] } presets 字段设定转码规则;常用的规则集 babel-preset-es2015 babel-preset-react babel-preset-stage-*(*为0-3,对应es7不同阶段语法提案的转码规则 共4个阶段) plugin presets,也就是一堆p
使用gulp-concat合并js文件
1.安装nodejs、构建目录、初始化项目搭建gulp项目2.安装gulp-concat插件在项目目录下打开命令提示符工具按下 ctrl+r --> 输入 cmd安装gulp-concatnpm install gulp-concat --save-dev可能会比较慢,等待一段时间。完成安装3.如何使用 首先在 项目根目录下的 gulpfile.js文件中间中 引入 gulp插件和gulp-con
使用require出现循环依赖模块报错的问题
当前文件是b.js文件,如果a.js文件与b.js相互依赖,这样写获取到的a就是underfined。define([ '../A' ],function(A){ 'use strict'; var B = function(){ console.log(A) // underfined } })应该写成如下的形式,才能使用A.js:define([
cocos2d-js使用的对象
1、把A对象添加到B对象中:B对象.addchild(A对象) 2、数组中变量名后面不需要维度[] 3、定义变量对象时使用类型符var 4、精灵cc.Sprite、层cc.Layer、Menu按钮cc.MenuItemLabel、文字显示cc.LabelTTF、菜单cc.Menu、精灵按钮cc.MenuItemSprite、图片按钮cc.MenuItemImage、开关按钮cc.MenuIt
解决requirejs循环依赖问题
一.问题:A依赖B(即A引用B且调用B中的方法),B也依赖A,这即为循环依赖,那么,当B调用A中的方法时,会发现A为undefined,这就是循环依赖导致的问题。 二.解决循环依赖的方法: 1.用scope模式传参方式; 2.用pubsub解耦; 3.用require(“A”)的方式: 3.1.enterlib-controller.js(即为A)中引用了enterlib-view.js(
页面传值不交互:JS存储数据之LocalStorage用法
本人的需求是一个页面传值给另外一个页面,但是不需要交互: A页面设置LocalStorage:     if(!window.localStorage){             alert("浏览器不支持localstorage");      }else{             var storage=window.localStorage;             loca
a.js调用b.js里面的方法
在调用之前,引入如下4行代码即可new_element=document.createElement("script"); new_element.setAttribute("type","text/javascript"); new_element.setAttribute("src","b.js");document.body.appendChild(new_element); 分析:利用do

相似问题

4
a.js中executeScript给某tab注入b.js,b.js计算完的值怎么传回a.js中?
1
如何在ASP表单中自动检测输入框字符后自动提交表单
5
js这里的for in 循环怎么引用到属性名
2
关于JS中如何将if切换成function
11
怎么在javascript里使用数组呢,var[] arr这样定义不行?
11
三个关于javascript的问题,在线急等,回答得好,c币要多少给多少
15
js怎么实现一个倒计时,这个方法没有实现,该怎么在这个代码上修改
3
这个里面的else不加 。为什么点击完以后页面就奔溃了,逻辑没想明白
6
我在session里面存了一个验证码,js里面怎么输出呀
14
HTML中使用JS函数通过id调用div,但一直显示()is not a function
2
js仿猫眼订票系统,不知道怎么修改着座位信息显示不出来了,代码如下
1
求助!!在微信浏览器中打开一个页面,需要记录用户在这个页面的访问时长。
4
悬赏20:给java.class文件添加一个可以随时修改参数的前端
2
jQuery中"animate()"自定义动画方法对“filter:blur()”的参数没有效果
16
为什么在某些情况下用jQuery中的"attr()"方法设置样式却没有效果?
1
TV20.JS中显示不了子目录
7
javaweb项目中,如何通过js获取src下的xml文件
4
一个简单的JS计算总价
6
在html文件中引用vue.js和直接创建.vue文件有什么差别??
5
js,为什么我在移除对象数组中的每一个对象的click事件时,只有最后一个对象移除成功?下有详细