我的第一个chrome扩展(2)——基本知识
1.manifest介绍界面:json格式
json:JavaScript Object Notation
包括两种结构:
key:value对:{{"A1":"value1","A2":"value2","A3":"value3"},{…},{…}}
值的有序集合 {"books":["book1","book2","book3"]}
value类型:字符串,数字,对象,数组,bool类型和null中的一种
json格式的数据可嵌套
2.DOM:document object model
DOM参阅:
http://www.ituring.com.cn/article/60188
http://www.w3school.com.cn/htmldom/
分为核心DOM,XML DOM和HTML DOM
HTML DOM的树状结构图:
每个文件有一个根元素<html>
每个根元素有两个子元素<head><body>
标签必须成对出现或者是自闭标签,嵌套关系必须明确
标签可以包含一些属性或者子节点,子节点可以是元素也可以是文本,如:
<img src="data:images/dog.png" />
<div>Hello World!</div><input type="text" id="stu_name" value="Billy" />
上面的input有type,id和value三个属性
type="text"表示是文本输出框
id="stu_name"表明给这个元素分配了一个名为stu_name的id
value="Billy"表示输入框的默认值为Billy
不同元素往往拥有不同的属性名,比如对于img
元素,通常会包含src
属性以指定所显示图片的地址,而input
元素往往会包含type
属性来描述输入框的类型。
js中有多种获取DOM元素的方法:
getElementById:通过id获取元素(HTML中元素的id唯一)
getElementsByName:通过name获取元素
getElementsByTagName:通过标签名获取元素
getElementsByClass:通过类名获取元素
后三种获得的是一个包含一个或多个元素的数组(必须是数组)
getAttribute:读取元素属性
setAttribute:添加或更改元素属性
removeAttribute:删除元素属性
var imgurl = document.getElementById('my_image').src;
document.getElementById('my_another_image').src = imgurl;
CSS的选择器:tagName,.className,#id
p {
width: 200px; //p标签的宽度为200px
}
.postlist {
width: 150px; //postlist类的元素宽为150px
}
#footer {
width: 100px; //id为footer的元素宽度为100px
}
CSS选择器还可以通过元素属性进行定位
input[type="text"]{
font-size:16px;
} //作用于所有文本输入框
3.跨域请求:通过XMLHttpRequest请求数据时禁止跨域
需要在Manifest的permissions属性中声明需要的权限
注意:阻塞函数与非阻塞函数
大多数API调用为非阻塞函数,因此要用回调函数传递结果
如:function httpRequest(url,callback)(url为传入网址,callback为处理传回数据的函数)
问题:传回的数据安全起见不能直接用innerHTML插入或eval执行
若将数据写入:使用innerText
若是json格式的数据:使用JSON.parse解析 ?
结合try-catch判定数据的格式 ?
4.常驻后台
注意:js的格式:函数除定义外,调用时记得加;
加入background域即可
我的第一个chrome扩展(2)——基本知识的更多相关文章
- 我的第一个chrome扩展(1)——读样例,实现时钟
学习chrome扩展开发: 与网页类似,需要的知识:html,javascript chrome扩展程序的构成: manifest.json:对扩展程序的整体描述文件 { "manifest ...
- 如何用原生js开发一个Chrome扩展程序
原文地址:How to Build a Simple Chrome Extension in Vanilla JavaScript 开发一个Chrome扩展程序非常简单,只需要使用原生的js就可以完成 ...
- 如何通过写一个chrome扩展启动本地程序
@(编程) [toc] 本文介绍如何利用Chrome 的插件, 从我们的一个网站中启动一个我们的本地程序.本文的环境是windows10,本文的例子是通过点击网页上的一个button,调用本地的wor ...
- 如何开发一个chrome扩展
chrome是一个不错的浏览器,web开发者工作中一般都会使用chrome做为默认浏览器,它有很多扩展,给浏览器补充了各种功能,增强了用户体验.chrome具体能干什么?怎么做出来的呢? chrome ...
- 推荐一个Chrome扩展应用,能够自动去除CSDN广告
作为一个程序员,每天编程遇到问题时,少不了前往国内著名的CSDN网站上查信息,看是否有同行遇到类似问题.很多时候根据遇到问题的错误消息进行搜索,结果都是一篇篇CSDN博客.这些博客打开后都会显示很多广 ...
- 跟我一起写一个chrome扩展程序
在我没有看这本书之前,我都想象不到,原来chrome扩展程序可以这样写,真的非常有意思. 就是用最简单最基础的代码,然后就实现了一些非常有意思的玩意儿. 先看效果图 实际运用要和现实联系在一起,经历和 ...
- 自己写一个chrome扩展程序 - 右键菜单扩展
最近在学习Spring,心想dotnet如何实现类似形式呢.于是想认真学习Casetle组件,发现没有书籍!而spring的书多得很.于是只好找网上教程了.发现系统的文章不多.Terrylee好多文章 ...
- 我的第一个chrome扩展(0)——目标
当前有两个方向: 一.实现一个自动解码的地址栏监视器 扩展程序在后台不断监视地址栏输入,地址栏输入并回车后检查输入,若输入符合解码条件则调用网站信息进行解码,并将结果输出到地址栏,否则不改变: 初始阶 ...
- 我的第一个chrome扩展(3)——继续读样例
1.操作用户正在浏览的界面 http://www.ituring.com.cn/article/60212 问题:1.google未定义ID,用name为何无法找到? 2.如何让整个按钮一起动?原函数 ...
随机推荐
- F Takio与Blue的人生赢家之战
Time Limit:1000MS Memory Limit:65535K 题型: 编程题 语言: 无限制 描述 在那个风起云涌的SCAU ACM里,有两位人生赢家,他们分别是大洲Takio神和 ...
- Codeforces Round #294 (Div. 2)
水 A. A and B and Chess /* 水题 */ #include <cstdio> #include <algorithm> #include <iost ...
- Square Coins[HDU1398]
Square Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- python 代码片段10
#coding=utf-8 #元组是列表的近亲.列表用方括号,元组用小括号 #django配置文件大量用到元组 #注意,单个元素的元组要求在最后"必须"跟一个逗号. a=(&quo ...
- POJ 2117 (割点+连通分量)
题目链接: http://poj.org/problem?id=2117 题目大意:在一个非连通图中,求一个切除图中任意一个割点方案,使得图中连通分量数最大. 解题思路: 一个大陷阱,m可以等于0,这 ...
- HDU 1180 (BFS搜索)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1180 题目大意:迷宫中有一堆楼梯,楼梯横竖变化.这些楼梯在奇数时间会变成相反状态,通过楼梯会顺便到达 ...
- Linq To Objects
一.什么是Linq To Objects 从根本上说,Linq To Objects表示一种新的处理集合的方法.采用旧方法,必须编写指定如何从集合检索数据的复杂的foreach循环.而采用Linq方法 ...
- TYVJ P1002 谁拿了最多奖学金 Label:模拟 水
背景 NOIP2005复赛提高组第一题 描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同:1) 院士奖学金,每人8000元,期末平均成绩高于80分( ...
- UOJ#77. A+B Problem
题目名称是吸引你点进来的. 从前有个 n 个方格排成一行,从左至右依此编号为 1,2,⋯,n. 有一天思考熊想给这 n 个方格染上黑白两色. 第 i 个方格上有 6 个属性:ai,bi,wi,li,r ...
- POST模拟百度登录和自动发帖
这里用HttpClient发包模拟百度登录和发帖,验证码部分采用机器下载人工识别. 登陆百度的原理:1. 访问https://passport.baidu.com/v2/api/?getapi& ...