chrome插件中回调函数与call的用法 20C

如下是一个下载页面内所有图片的chrome扩展代码,其中的 [].map.call是什么意思,background中的results与url参数的数据又是哪里来的?

background.js:

chrome.runtime.onInstalled.addListener(function(){
  chrome.contextMenus.create({
    'id':'saveall',
    'type':'normal',
    'title':'save all picture',
  });
});

 chrome.contextMenus.onClicked.addListener(function(info, tab){
  if(info.menuItemId == 'saveall'){
    chrome.tabs.executeScript(tab.id, {file: 'main.js'}, function(results){
      if (results && results[0] && results[0].length){
        results[0].forEach(function(url) {
          chrome.downloads.download({
            url: url,
            conflictAction: 'uniquify',
            saveAs: false
          });
        });
      }
    });
  }
});

main.js:

 [].map.call(document.getElementsByTagName('img'), function(img){
  return img.src;
});
0

1个回答

map是js数组的一个方法,call用于执行方法并且改变方法执行时函数体内this指向用的,document.getElementsByTagName返回的是特殊的HTMLCollection数组,没有普通数组的map方法,无法直接调用map,所以通过 [].map.call这种形式来调用

具体map方法参考这个:http://www.runoob.com/jsref/jsref-map.html

 results是chrome.tabs.executeScript执行成功后的回调函数,插件会自动调用这个匿名回调并传入参数值,results就是接受回调值用的变量名
4. 3.  脚本注入


chrome.tabs.executeScript(integer tabId, object details, function callback)


向页面注入JavaScript 脚本执行。

场合:
如果不需要将javascript 和css注入到每一个匹配的网页里面,可以通过程序来控制代码的注入。 例如, 可以只在用户点击了一个browser action图标后才注入脚本。
如果要将代码注入页面,扩展必须具有cross-origin 权限, 还必须可以使用chrome.tabs模块。 可以通过在manifest文件的permissions字段里声明来取得这些权限。

---------------------
作者:多则惑少则明 
来源:CSDN 
原文:https://blog.csdn.net/huazhongkejidaxuezpp/article/details/50416947?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

url是js数组forEach遍历回调函数执行时遍历到的数组当前值
http://www.runoob.com/jsref/jsref-foreach.html

1
caozhy
weixin_45841714 好详细,学习了。
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java回调函数的用法
package com.cy.test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class WorkImpl { public void work(CallBack callBack) { System.out.println("work s
回调函数callback function的机制及使用举例
如果把函数指针传递给另一个函数(调用者),当调用者执行时,函数指针所指的函数也被执行。被调用的函数就是回调函数。 回调函数实现的机制是 1、定义一个回调函数;  2、提供函数实现的一方在初始化的时候,通过注册函数 向调用者(管理单元/调度函数)注册回调函数的函数指针。  3、当特定的事件发生时候,调用者使用函数指针调用回调函数对事件进行处理。 举例: Quagga0.9.22中OSPF...
call跟apply以及回调函数callback
  apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性.    Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组,它将作为参数传给Function(args-->arguments)  call:和apply的意思一样,只不过是参数列表不一样.  Function.ca...
玩转VC++实现CallBack
题目有点大,其实本文只是要DEMO一下用函数指针在VC++实现回调。 一、函数指针 那么什么是函数指针呢?说白了就是指向函数的指针,它是一个变量。 通常,函数会被编译为一段二进制机器码。每个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。 可以把函数的这个首地址(入口地址)赋予一个指针变量,使该指针变量指向该函数。 那么就可以通过该指针变量就可以找到并且调用这个函数了
C语言中的回调函数(Callback Function)
回调函数是指 使用者自己定义一个函数,实现这个函数的程序内容,然后把这个函数(入口地址)作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数。函数是你实现的,但由别人(或系统)的函数在运行时通过参数传递的方式调用,这就是所谓的回调函数。简单来说,就是由别人的函数运行期间来回调你实现的函数。 回调函数主要结构有三部分组成:主函数、调用函数和被调函数
Lua回调函数小结
最近做一个小项目,是用Lua写的,中间用到了很多的回调,基本Cocos中的那几种常用回调都用到了,本文就针对所用到的回调函数做一个总结。 1、菜单按钮的回调 这二者的回调是这么实现的,新建一个菜单或者是按钮,为了点击菜单或者按钮以后实现程序的逻辑,我们需要为菜单和按钮来绑定一个回调函数,于是乎,我们有了以下的代码: 1 2 3
Java 回调函数callback 用法
1.定义回调函数接口里面包含一个方法public interface CallBack { public void execute(); } 2.定义业务处理类业务处理类里的方法形参出入CallBack接口。业务处理类里的方法内容包括:处理业务和执行回调函数。//业务处理类 public class TestBookCallBack { public void test(CallBa...
NS3的Callback例子讲解
以main-callback.cc为例,讲解Callback用法。
solidity中的transfer、send、call(delegatecall)的区别和用法总结
务必注意:solidity0.5.0以上的版本发生了很大的变化,具体的规则以官方最新版为准!!! transfer、send、call都是可以合约之间相互转账的方法,但是用法有很大的不同! //如果异常会转账失败,抛出异常(等价于requi(send()))(合约地址转账) // 有gas限制,最大2300 <addresspayable>.transfer(uint25...
js 回调函数 3种用法
js 回调函数大致有以下三种用法, 1,直接回调 2,call回调 3,apply回调 回调函数作用得当,减少代码冗余,代码可读性增强,代码维护也轻松很多。 什么要用到回调函数呢? 当有很多地方需要调用同一个函数,并且这一函数根据不同的需要,作不同的处理,这个时候用回调函数就特别合适了。 一,直接回调 function son () { alert('tank t
JdbcTemplate 使用了模版模式和回调函数:
JdbcTeplate
C++函数指针
C++编程语言中函数指针常见用法:函数调用及回调函数中的使用。
JS中回调函数(callback)理解
前言 今天有个刚入行的小兄弟问到了回调函数,讲解了一番以后觉得不能白讲,得把这些东西记下来,虽然很基础。。。 介绍 首先从英文介绍开始 A callback is a function that is passed as an argument to another function and is executed after its parent function has complet...
js中的call()和apply()方法
1.call() 语法:obj1.call(obj2[,param1,param2,...]) 定义:用obj2对象来代替obj1,调用obj1的方法。即将obj1应用到obj2上。 说明:call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 obj2 指定的新对象。 如果没有提供 obj2参数,那么 Global 对象被用作 obj
(七)以太坊开发,address的call、delegatecall、transfer的用法
address.transfer(uint256 value) :给 address 转账 value(Wei),且调用异常会抛出。address.call,  address.delegatecall:智能合约相互调用时使用,两者区别是,A调用B函数,call方法结果展示到B中,delegatecall方法结果展示到A中。1、合约代码pragma solidity ^0.4.0; contrac...
关于Meteor.call( )同步/异步的思考
meteor 的methods的调用方法是Meteor.call( )关于Meteor.call( )的使用有两种:1.Meteor.call('fun',1,2,function(err,result){ .........} )2.Meteor.call('fun',1,2 )        这两种方式是有区别的。在call中指定回调函数时,这个调用就是异步的,不会阻塞后面的代码。而不知道回调...
AS中使用回调函数
<br />当你想通过一个类来加载XML或者图片等,想让他返回一个XML或者Bitmap,你不能在类的构造函数直接return,因为他可能return的时候 还没有load完,往往会返回一个空的,这时候你就可以尝试使用回调函数了,或者使用DispatchEvent,如果是一个小程序的话不妨试下回调函 数,简单实用,代码如下: publicclass LoadXML<br />{<br />privatevar fBack:Function ;<br />  <br />publ
回调函数的应用
回调函数的应用,了解回调函数的用法学习回调函数的思想
什么是回调机制(Call back)
回调机制(一个动词词组,Call back)是指编写框架/类库时程序员所需要的、系统让上层模块提供代码的机制。
回调函数是什么鬼(java)
回调函数(callback)是什么鬼?(java)这篇文章我们来谈一谈回调函数,什么是回调函数?下面是百度百科的解释: 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 所以说回调
okHttp回调函数写法
[size=xx-large]包装成工具类:[/size] [code=&quot;java&quot;]public class OkHttpUtil { public static void RequestData(String address,final HttpCallBackListener listener){ OkHttpClient client = new OkHt...
JavaScript中call()函数详细用法
call() 方法调用一个函数, 其具有一个指定的this值和分别地提供的参数(参数的列表)。注意:该方法的作用和 apply() 方法类似,只有一个区别,就是call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组。语法fun.call(thisArg, arg1, arg2, ...)参数thisArg在fun函数运行时指定的this值。需要注意的是,指定的...
call()的具体使用方法
先展示个例子:  var Person = function(name){ this.name = name; }; Person.prototype = { constructor:Person, id:100 }; var Boy = function(name,sex,age){ Person.call(this,name); this.sex = ...
Chrome插件 - JS跨域请求( 结合回调函数 )
跨域指的是JavaScript通过XMLHttpRequest请求数据时,调用JavaScript的页面所在的域和被请求页面的域不 一致。 对于网站来说,浏览器出于安全考虑是不允许跨域,但是Chrome为了大幅度拓展浏览器第三方功能,提供了跨域操作, 前提需要在Manifest.json文件中声明需要跨域的页面: "permissions": [ "http://*/*", "ht...
【干货】Chrome插件(扩展)开发全攻略
【干货】Chrome插件(扩展)开发全攻略 写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处。本文所有涉及到的大部分代码均在这个demo里面:https://github.com/liuxianan/chrome-plugin-demo ,大家可以直接下载下来运行。 另外,本文图片较多,且图
call()的用法
转自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/call call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. 注意:该方法的作用和 apply() 方法类似,只有一个区别,就是call()方法接受的是若干
JS中call用法理解
call()方法是借用构造函数来实现继承,即在子类型构造函数的内部调用超类型构造函数。 我理解的call()的作用就是改变上下文,即在以下代码中的 function subtype(){ superType.call(this, "Tom"); this.age = 11; } 相当于 function subtype(){ this.name
回调函数和数组
array_filter(),array_map() ,array_reduce(),array_walk()的用法比较 array_filter — 用回调函数过滤数组中的单元 说明:array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) 依次将 array 数组中的每个值传递到 callb...
Android开发——回调(Callback)
1. 回调函数的定义: 在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用。 2. 类比: 你(B类)去书店买书,结果发现想买的书卖完了,这时候书店(A类)告诉你他们有来书通知业务(接口和接口中的抽象方法),于是你留下了自己的手机号让书店有书了给你来电(实现该
什么是回调函数(callback function)
生动的描述: 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。
rxJava的使用--Observable的创建及源码分析(一)
最近新开的项目需要用到rxJava.在网上找了一下资料,感觉资料好少,有一些资料虽然有例子,但例子都好复杂,对一个新手来说操作是挺麻烦的.因此,本人根据自己的理解写了一些例子.因此写下了本文,给记忆力不好的自己,留作复习用,也希望能帮助大家吧.        本文的讲解顺序是根据ReactiveX文档中文翻译来写的,因为该文档已经把一些概念性的东西讲得很清楚了,因此在这里我就不再进行讲述.如果有需
JS中的call()方法和apply()方法用法总结
JacvaScript中的call()方法和apply()方法, 1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法。 2. 相同点:这两个方法的作用是一样的。都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。
在类里面实现ros的subscribe或message_filter的回调遇到的坑
坑1:没有在ros的subscribe的输入参数里写上这个类对应的指针,也就是this关键词。 Segmentator{ public:   void run(){     pub = nh2.advertise&amp;lt;sensor_msgs::PointCloud2&amp;gt;(&quot;/cloud_without_floor&quot;, 1000);     sub = nh.subscribe(&quot;/came...
js改变this指向的方法:call apply bind
在函数中使用this function foo(c, d) { return this.a + this.b + c + d } global.a = 3 global.b = 4 // foo执行时,this没有明确的指向,默认指向全局对象global // nodejs中是global,browser中是window foo(3, 4) // 14 ...
回调函数(CallBack)
首先声明,回调函数并不是一种特殊的函数结构,而指的是利用函数指针来回调写好的函数的一种使用方法。 1.回调函数是什么其具体实现是使用者自己定义一个函数,并且使用者自己实现这个函数的程序内容,然后将自己的函数作为参数传入别人的函数中,由别人的系统函数在运行时调用。简单地说也就是—-由别人的函数运行期间来回调你实现的函数。别人并不关心你的函数的具体实现,只知道在什么时候调用你的函数;而你知道你的函数的
回调函数的面向对象改造
熟悉C编程的朋友对回调函数一定不陌生,它一般用于一个模块将自己的阶段性输出传递给另一个模块,由另一个模块进行更细致的处理。 整个处理过程,就像一条河流,从源头出发,到了某个点分出若干支流,支流又分出若干支流,每一段都会被人所用 在面向对象系统里,我们怎么对这个基于回调函数的处理过程进行描述? 我想用一个概念来描述,叫信息流的上下游,信息流上的每个节点都有一个上游,若干个下游,上游可以
call()与apply()的用法与区别
ECMAScript中的函数是对象,因此函数也有属性与方法。每个函数都包含两个非继承而来的方法:apply()和call()。这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this的对象的值。一、apply()方法apply()方法接受两个两个参数:一个是在其中运行函数的作用域,另一个是参数数组。其中第二个参数可以是Array的实例,也可以是arguments对象      ...
js call方法使用
今天看到公司一道js面试题,代码如下,问使用getName方法打印出1,2,3 var name = &quot;1&quot;; var obj = { name:2, prop: { name:3, getName: function() { return this.name; ...
用ES6 Generator替代回调函数
目前,已经有很多文章讨论过了如何使用ES6 generators来取代JavaScript中经常遇到的“回调金字塔”。但是,其中提到的绝大多数方法都需要依赖于某个库,而对于其中的原理却提及甚少。 在本文中,我们将一步一步的将一个基于回调函数的例子修改为一个基于generator的例子。本文的目标是让你透彻地理解使用generator替代回调函数的原理。 Generator是JavaSc
Python中__call__用法实例
本文实例讲述了Python中__call__的用法,分享给大家供大家参考之用。具体方法如下: 先来看看如下示例代码: ? 1 2 3 4 5 6 7 8 9 10 #call.py 一个class被载入的情况下。 class Next:   List = []       def __init__(self,low,
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java回调函数学习 机器学习中的数学基础