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
caozhy 好详细,学习了。
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
15、JS回调函数与call函数
自学jquery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗。迅速google之,发现原来中文翻译成回调。也就是回调函数了。不懂啊,于是在google回调函数,发现网上的中文解释实在是太“深奥”了,我承认自己才疏学浅了。看了几个回调的例子后,貌似有点理解了。下面是我对回调函数的理解,要是理解错了,请指正,不甚感激。         首先还是从jquery网站上的英文定义入手,
js 回调函数 3种用法
js 回调函数大致有以下三种用法, 1,直接回调 2,call回调 3,apply回调 回调函数作用得当,减少代码冗余,代码可读性增强,代码维护也轻松很多。 什么要用到回调函数呢? 当有很多地方需要调用同一个函数,并且这一函数根据不同的需要,作不同的处理,这个时候用回调函数就特别合适了。 一,直接回调 function son () { alert('tank t
call跟apply以及回调函数callback
  apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性.    Function.apply(obj,args)方法能接收两个参数 obj:这个对象将代替Function类里this对象 args:这个是数组,它将作为参数传给Function(args-->arguments)  call:和apply的意思一样,只不过是参数列表不一样.  Function.ca...
NS3的Callback例子讲解
以main-callback.cc为例,讲解Callback用法。
关于Meteor.call( )同步/异步的思考
meteor 的methods的调用方法是Meteor.call( )关于Meteor.call( )的使用有两种:1.Meteor.call('fun',1,2,function(err,result){ .........} )2.Meteor.call('fun',1,2 )        这两种方式是有区别的。在call中指定回调函数时,这个调用就是异步的,不会阻塞后面的代码。而不知道回调...
js中的call()和apply()方法
1.call() 语法:obj1.call(obj2[,param1,param2,...]) 定义:用obj2对象来代替obj1,调用obj1的方法。即将obj1应用到obj2上。 说明:call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 obj2 指定的新对象。 如果没有提供 obj2参数,那么 Global 对象被用作 obj
回调函数callback function的机制及使用举例
如果把函数指针传递给另一个函数(调用者),当调用者执行时,函数指针所指的函数也被执行。被调用的函数就是回调函数。 回调函数实现的机制是 1、定义一个回调函数;  2、提供函数实现的一方在初始化的时候,通过注册函数 向调用者(管理单元/调度函数)注册回调函数的函数指针。  3、当特定的事件发生时候,调用者使用函数指针调用回调函数对事件进行处理。 举例: Quagga0.9.22中OSPF...
C++函数指针
C++编程语言中函数指针常见用法:函数调用及回调函数中的使用。
JdbcTemplate 使用了模版模式和回调函数:
JdbcTeplate
perl 回调函数
回调函数 callback 在perl中的表现 我稍微总结了下回调函数,callback,希望能帮助新手理解模块中的callback 回调函数的认识: 1回调函数是一个函数,其在脚本中只能以参数的形式进行传递。不被直接调用。在perl中有两种形式; $funcrefer=sub {}; #引用 Sub xxx {}; \&xxx,#函数的引用取其地址 2回调函数
javascript this 和 es6 箭头函数this 的理解以及call()、apply()、bind()的用法
普通函数,记住三点:当函数作为对象的方法调用时,this就是该对象;当函数作为单纯函数调用时,严格模式下,this是undefined,非严格模式下是全局对象,浏览器中就是window;this不是变量,嵌套函数中的this不会从外层继承this值var obj = {   func: function() {},   say: function () {     var that = this;...
回调函数的应用
回调函数的应用,了解回调函数的用法学习回调函数的思想
【干货】Chrome插件(扩展)开发全攻略
【干货】Chrome插件(扩展)开发全攻略 写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处。本文所有涉及到的大部分代码均在这个demo里面:https://github.com/liuxianan/chrome-plugin-demo ,大家可以直接下载下来运行。 另外,本文图片较多,且图
Android开发——回调(Callback)
1. 回调函数的定义: 在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用。 2. 类比: 你(B类)去书店买书,结果发现想买的书卖完了,这时候书店(A类)告诉你他们有来书通知业务(接口和接口中的抽象方法),于是你留下了自己的手机号让书店有书了给你来电(实现该
玩转VC++实现CallBack
题目有点大,其实本文只是要DEMO一下用函数指针在VC++实现回调。 一、函数指针 那么什么是函数指针呢?说白了就是指向函数的指针,它是一个变量。 通常,函数会被编译为一段二进制机器码。每个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。 可以把函数的这个首地址(入口地址)赋予一个指针变量,使该指针变量指向该函数。 那么就可以通过该指针变量就可以找到并且调用这个函数了
C++中回调(CallBack)的使用方法
回调函数是一个很有用,也很重要的概念。当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。回调函数在windows编程使用的场合很多,比如Hook回调函数:MouseProc,GetMsgProc以及EnumWindows,DrawState的回调函数等等,还有很多系统级的回调过程。 一般情况下, 我们使用的回调函数基本都是采用C语言风格. 这里介绍一种C++风格的回调对象方法. 采用t
JS中的call()方法和apply()方法用法总结
JacvaScript中的call()方法和apply()方法, 1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法。 2. 相同点:这两个方法的作用是一样的。都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。
JS的回调函数callback-简单易懂有实例
比如我们常用的异步请求: $.ajax({ url:"test.json", type: "GET", data: {username:$("#username").val()}, dataType: "json", beforSend:function(){ // 禁用按钮防止重复提交 $("#submit").a
js中call与apply的用法小结
js中call与apply的用法小结 本篇文章主要是对js中call与apply的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 前天去面试,有个gg问了一些js知识,其中有一道call与apply用法的题目,尽管在365天前用过call方法,但当时还是没能答上来,今天深入总结一下 call和apply,它们的作用都是将函数绑定到另外一个对象上去运行 两
call()的用法
转自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/call call() 方法在使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法. 注意:该方法的作用和 apply() 方法类似,只有一个区别,就是call()方法接受的是若干
Java 回调函数callback 用法
1.定义回调函数接口里面包含一个方法public interface CallBack { public void execute(); } 2.定义业务处理类业务处理类里的方法形参出入CallBack接口。业务处理类里的方法内容包括:处理业务和执行回调函数。//业务处理类 public class TestBookCallBack { public void test(CallBa...
exec 和 call 用法详解
http://www.111cn.net/database/Oracle/39433.htm exec 和 call 用法详解 exec 和 call 执行一个procedure时,  declare s_in     varchar2(30):= '   where   col=13 ' '; v_sql_str       varchar2(200); begin   v
js中的call()方法的使用实例
call方法 $(document).ready(function(){ }) $().ready(function(){ //do something }) //参考:http://uule.iteye.com/blog/1158829 $(function(){ //------------1.常例-------------- function add(a,b
JS中call用法理解
call()方法是借用构造函数来实现继承,即在子类型构造函数的内部调用超类型构造函数。 我理解的call()的作用就是改变上下文,即在以下代码中的 function subtype(){ superType.call(this, "Tom"); this.age = 11; } 相当于 function subtype(){ this.name
AS中使用回调函数
<br />当你想通过一个类来加载XML或者图片等,想让他返回一个XML或者Bitmap,你不能在类的构造函数直接return,因为他可能return的时候 还没有load完,往往会返回一个空的,这时候你就可以尝试使用回调函数了,或者使用DispatchEvent,如果是一个小程序的话不妨试下回调函 数,简单实用,代码如下: publicclass LoadXML<br />{<br />privatevar fBack:Function ;<br />  <br />publ
C语言中的回调函数(Callback Function)
回调函数是指 使用者自己定义一个函数,实现这个函数的程序内容,然后把这个函数(入口地址)作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数。函数是你实现的,但由别人(或系统)的函数在运行时通过参数传递的方式调用,这就是所谓的回调函数。简单来说,就是由别人的函数运行期间来回调你实现的函数。 回调函数主要结构有三部分组成:主函数、调用函数和被调函数
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)
生动的描述: 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。
回调函数(CallBack)
首先声明,回调函数并不是一种特殊的函数结构,而指的是利用函数指针来回调写好的函数的一种使用方法。 1.回调函数是什么其具体实现是使用者自己定义一个函数,并且使用者自己实现这个函数的程序内容,然后将自己的函数作为参数传入别人的函数中,由别人的系统函数在运行时调用。简单地说也就是—-由别人的函数运行期间来回调你实现的函数。别人并不关心你的函数的具体实现,只知道在什么时候调用你的函数;而你知道你的函数的
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...
什么是回调机制(Call back)
回调机制(一个动词词组,Call back)是指编写框架/类库时程序员所需要的、系统让上层模块提供代码的机制。
C++学习:回调函数(callback)
C++学习:回调函数(callback)简介: 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应 可能这些概念性的东西不是太好理解,通俗一点,回调函数就是在两个独立函
在类里面实现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...
Python中__call__用法实例
本文实例讲述了Python中__call__的用法,分享给大家供大家参考之用。具体方法如下: 先来看看如下示例代码: ? 1 2 3 4 5 6 7 8 9 10 #call.py 一个class被载入的情况下。 class Next:   List = []       def __init__(self,low,
JavaScript中call()函数详细用法
call() 方法调用一个函数, 其具有一个指定的this值和分别地提供的参数(参数的列表)。注意:该方法的作用和 apply() 方法类似,只有一个区别,就是call()方法接受的是若干个参数的列表,而apply()方法接受的是一个包含多个参数的数组。语法fun.call(thisArg, arg1, arg2, ...)参数thisArg在fun函数运行时指定的this值。需要注意的是,指定的...
如何理解回调函数 CallBack
如果是初次接触Windows程序的人,一般理解回调函数觉得非常困难,笔者下面非常简单的程序剥开回调函数的真面目。 笔者使用的编译器是VS2008,所以有这行代码 #include "stdafx.h", // TestConsole.cpp : Defines the entry point for the console application. // #include "stda
call 不可以使用在plsql中,只能在sql*plus中使用。
转载地址 :http://warehouse.itpub.net/post/777/488171 call 不可以使用在plsql中,只能在sqlplus中使用。 SQL> create or replace procedure proc_test 2 is 3 v_count number; 4 begin 5 select count(*) into v_count from
Js中apply与call的区别与用法
解析:apply与call是更改对象的内部指针,即改变对象的this指向的内容。 call与apply的第一个参数都是要传入给当前对象的对象,及函数内部的this。后面的参数都是传递给当前对象的参数。 参数区别:apply传入的必须是一个参数数组,也就是将多个参数组合成为一个数组传入,而call没有此限制。
回调函数的定义与用法
0. 引言 使用过SDK的朋友应该知道“回调函数”(callback function)这个概念,但本文并不是介绍如何使用回调函数,而是站在SDK开发者的角度,讲述如何实现回调机制。 1. 何为回调(callback) 所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典
call()与apply()的用法与区别
ECMAScript中的函数是对象,因此函数也有属性与方法。每个函数都包含两个非继承而来的方法:apply()和call()。这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this的对象的值。一、apply()方法apply()方法接受两个两个参数:一个是在其中运行函数的作用域,另一个是参数数组。其中第二个参数可以是Array的实例,也可以是arguments对象      ...
文章热词 H.264格式slice用法 em算法中的隐变量问题 机器学习 机器学习课程 机器学习教程
相关热词 android.mk call android中的回调函数 c++中回调函数的重要性 python中字典教程 python中pygame教程