博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
chrome扩展获取页面dom对象信息
阅读量:6619 次
发布时间:2019-06-25

本文共 1938 字,大约阅读时间需要 6 分钟。

chrome扩展,在popup页面,给页面对象绑定点击事件,获取当前tab加载页面的DOM对象信息。本chrome扩展功能主要用于获取百度搜索输入框中用户输入的关键字。效果如下

chrome扩展获取页面dom对象信息

  源代码如下

注意:以下文件全部以utf-8文件编码保存

manifest.json

1
2
3
4
5
6
7
8
9
10
    
{
      
"name"
"chrome扩展获取页面dom对象信息"
,
      
"manifest_version"
: 2,
      
"version"
"1.0"
,
      
"author"
:
"showbo,http://www.coding123.net"
,
      
"description"
"chrome扩展,在popup页面,给页面对象绑定点击事件,获取当前tab加载页面的DOM对象信息。本chrome扩展功能主要用于获取百度搜索输入框中用户输入的关键字。"
,
      
"browser_action"
: {
"default_popup"
"popup.html"
},
      
"content_scripts"
: [{
"matches"
: [
"*://*/*"
],
"js"
: [
"baidu.js"
]}],
      
"permissions"
: [
"*://*/*"
,
"tabs"
]
    
}

popup.html

注意事项:chrome扩展不支持inline-script,绑定事件的代码需要放到外部js文件中,也不能直接在DOM对象上添加click事件

1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<
html
>
<
head
>
<
meta 
http-equiv
=
"content-type" 
content
=
"text/html;charset=utf-8"
>
<
title
>chrome extension获取页面DOM对象</
title
></
head
>
<
body
><
pre
>browser_action中的default_popup指定的页面<
br 
/>
页面中DOM对象如何绑定事件并且获取当前页面的DOM对象信息</
pre
>
<
a 
id
=
"a" 
href
=
"#"
>点击获取百度搜索输入框中的关键字</
a
>
<
script 
src
=
"bindEvent.js"
></
script
></
body
></
html
>
bindEvent.js
1
2
3
4
5
6
7
8
9
var 
a = document.getElementById(
'a'
);
a.onclick = 
function 
() {
//给对象绑定事件
    
chrome.tabs.getSelected(
null
function 
(tab) {
//获取当前tab
        
//向tab发送请求
        
chrome.tabs.sendRequest(tab.id, { action: 
"GetBaiduKeyWord" 
}, 
function 
(response) {
            
alert(response.kw);
        
});
    
});
}
baidu.js
1
2
3
4
5
6
7
chrome.extension.onRequest.addListener(
//监听扩展程序进程或内容脚本发送的请求
    
function 
(request, sender, sendResponse) {
        
if 
(request.action == 
"GetBaiduKeyWord"
) {
            
sendResponse({ kw: document.forms[0].wd.value });
        
}
    
}
);

  注意:chrome.tabs.sendRequest和chrome.extension.onRequest这2个对象在版本的chrome中将被废弃,使用chrome.runtime.sendMessage和chrome.runtime.onMessage代替。

由于本人的chrome版本为25,好像没有支持chrome.runtime对象,chrome.runtime为undefined(据说 chrome.runtime 对象chrome22+就支持了。搞毛。。?),懒得升级chrome,所以就没用chrome.runtime对象。

所以如果chrome扩展出错没有效果,可能是这2个对象的问题。

  源代码压缩包下载:

本文转自问道博客51CTO博客,原文链接http://blog.51cto.com/450236/1852039如需转载请自行联系原作者

crackernet

你可能感兴趣的文章
VS2013下的64位与32位程序配置
查看>>
浅谈C中的指针和数组(二)
查看>>
SSM+Maven+IDEA增删改查
查看>>
微信小程序开发模板消息的时候 出现 errcode: 41028, errmsg: "invalid form id hint:
查看>>
2001年日语能力考试二级真题及答案
查看>>
移动端页面布局
查看>>
FUNCS.H中的函数声明
查看>>
让织梦CMS的后台编辑器支持优酷视频
查看>>
Python语言中round函数的一个疑惑
查看>>
Spring事务隔离级别,事务传播行为
查看>>
CRC是什么?
查看>>
每次看完羽毛球赛
查看>>
第一章练习题
查看>>
三、JVM垃圾回收1(如何寻找垃圾?)
查看>>
RabbitMQ-从基础到实战(2)— 防止消息丢失
查看>>
【译】ExtJS 4.1会带来什么
查看>>
重要的话
查看>>
mysql多个TimeStamp设置(转)
查看>>
php中的占位符
查看>>
Strus2学习Exception处理集锦(一)
查看>>