1. chrome 的 console 中不能添加本地文件

2. 下面的代码是在亚马逊的商品页面上添加一个 image, 点击之后触发 alert 函数. 其中 cBoxInner 是人工寻找到的标签

/*
* locate insertion place
*/
insertPlace = document.getElementsByClassName("cBoxInner")[2] /*
* create a button
*/ myImage = document.createElement("image")
myImage.src = "http://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Rotating_earth_%28large%29.gif/200px-Rotating_earth_%28large%29.gif"
myImage.onclick = function() {alert("Image is clicked")}
/*
* insert a button
*/
insertPlace.insertBefore(myImage)

3. using callback

JS 中有些函数是 asychronous 的, 比如

//THIS CODE DOESN'T WORK
var tab = chrome.tabs.query({'active': true}); //WRONG!!!
chrome.tabs.update(tab.id, {url:newUrl});
someOtherFunction();

这种风格的代码在 C++/JAVA 中一般都是行的通的, 但在 JS 中, query 函数是 asychronous, 这意味着 query will return without its work finished

为了应对这个问题, JS 有了回调函数的说法, 回调函数的 syntax 是

chrome.tabs.query(object queryInfo, function callback)

对上一行代码, 可以写成

//THIS CODE WORKS
chrome.tabs.query({'active': true}, function(tabs) {
chrome.tabs.update(tabs[0].id, {url: newUrl});
});
someOtherFunction();

4. chrome.tabs.executeScript

syntax 为

chrome.tabs.exectuteScript (integer, InjectDetails details, function callback)

5. findElementById

返回对应的组件, 假如没有找到的话返回 NULL

6. findElementByClassName 返回的是一个数组, 可以通过 数组的下标获取所需

insertPlace = document.getElementsByClassName("cBoxInner")[2]

7. chrome 获取当前 tabId

function doInCurrentTab(tabCallback) {
chrome.tabs.query(
{ currentWindow: true, active: true },
function (tabArray) { tabCallback(tabArray[0]); }
);
}
var activeTabId;
doInCurrentTab( function(tab){ activeTabId = tab.id } );

8. backgroud.js 中的代码只会执行一次, 即使设置 persistent = true --- 这个实际上没啥用

要是想没打开一个网页或者刷新网页时就会触发动作, 那么就应该插入监听器, Listener

  

chrome JS 总结的更多相关文章

  1. Chrome JS内存泄漏排查方法(Chrome Profiles)

     原文网址:http://blog.csdn.net/kaitiren/article/details/19974269 JS内存泄漏排查方法(Chrome Profiles)   Google Ch ...

  2. chrome JS关闭当前页无效问题

    如果没有父窗口,JS中 window.opener = null; window.open("", "_self"); window.close(); 对chr ...

  3. Chrome JS断点调试技巧

    Chrome调试折腾记_(2)JS断点调试技巧 技巧一:格式化压缩代码 技巧二:快速跳转到某个断点的位置 技巧三:查看断点内部的作用范围[很实用] 技巧4:监听事件断点 技巧5:DOM及 XHR监听跳 ...

  4. chrome js报错Uncaught SyntaxError: Unexpected string

    个人博客 地址:http://www.wenhaofan.com/article/20180912123136 js报错,最后发现是$(function(){})这部分()不完整 $(function ...

  5. chrome js 获取css

    var myDiv = document.getElementById("chooseRect"); var computedStyle = document.defaultVie ...

  6. JS判断浏览器类型的方法总结(IE firefox chrome opera safari)

    JS判断浏览器类型的方法总结,可判别当前客户端所使用的浏览器是ie,firefox,safari,chrome或者是opera,另外js可以精确判断到ie浏览器的版本,依然直接上代码,需要的朋友可按照 ...

  7. js实现浏览器兼容复制功能

    经常看到这样一种效果:就是单击一个按钮,就将某个区域内的内容,复制到了剪切板中.其实这个功能实现起来也不难,核心就是用到了window子对象clipboardData的一个方法:setData()语法 ...

  8. Chrome Extension in CLJS —— 搭建开发环境

    前言  磨刀不误砍柴工,本篇将介绍如何搭建Chrome插件的ClojureScript开发环境. 具体工具栈:vim(paredit,tslime,vim-clojure-static,vim-fir ...

  9. Selenium常用API用法示例集----下拉框、文本域及富文本框、弹窗、JS、frame、文件上传和下载

    元素识别方法.一组元素定位.鼠标操作.多窗口处理.下拉框.文本域及富文本框.弹窗.JS.frame.文件上传和下载 元素识别方法: driver.find_element_by_id() driver ...

随机推荐

  1. SimpleDateFormat转换时间,12,24时间格式

    Date d = new Date(); SimpleDateFormat ss = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//1 ...

  2. 重装Ubuntu系统

    1.安装JDK参考:http://weixiaolu.iteye.com/blog/1401786jdk-6u31-linux-i586.bin莫名奇妙的安装失败.所以下载了jdk-7u45-linu ...

  3. 自定义maven变量以及maven内置常量

    本文转自:http://zheng12tian.iteye.com/blog/1770909 在创建Maven工程后,插件配置中通常会用到一些Maven变量,因此需要找个地方对这些变量进行统一定义,下 ...

  4. Liunx 安装 Mysql 5.7

    #[安装 Mysql 5.7] # 00.系统目录说明# 安装文件下载目录:/data/software# Mysql目录安装位置:/usr/local/mysql# 数据库保存位置:/data/my ...

  5. Java 日期处理类库Joda-Time简介

    http://www.ibm.com/developerworks/cn/java/j-jodatime.html 登录 (或注册) 中文 IBM 技术主题 软件下载 社区 技术讲座 搜索 devel ...

  6. java资料——线性表(转)

    线性表 线性表(亦作顺序表)是最基本.最简单.也是最常用的一种数据结构.线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的.线性表的逻辑结构简单, ...

  7. server后台程序的内存使用问题

    眼下我开发的一个server后台程序存在这么一个问题,因为我的程序要不断的收发消息,并做统计.统计用的是stl的多重map.在统计中会不断的往map里赛数据. 可是每次统计后我都会调用clear()去 ...

  8. iOS边练边学--UIScrollView的属性简单使用,代理的简单介绍以及内容缩放

    一.什么是UIScrollView *移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也是相当有限 *当展示的内容较多,超出一个屏幕时,用户可通过滚动收拾来查看屏幕以外的内容 *普通的UI ...

  9. ERROR 1290

    Mysql创建用户时.出现如下错误! mysql> create user 'testuse'@'localhost' identified by '111111'; ERROR 1290 (H ...

  10. Java实现一个简单的缓存方法

    缓存是在web开发中经常用到的,将程序经常使用到或调用到的对象存在内存中,或者是耗时较长但又不具有实时性的查询数据放入内存中,在一定程度上可以提高性能和效率.下面我实现了一个简单的缓存,步骤如下. 创 ...