我爱编程

操作用户正在浏览的页面

2018-05-23  本文已影响39人  SingleDiego

参考原文

知识点:




通过 Chrome 扩展我们可以对用户当前浏览的页面进行操作,实际上就是对用户当前浏览页面的 DOM 进行操作。

通过 Manifest 中的 content_scripts 属性可以指定将哪些脚本何时注入到哪些页面中,当用户访问这些页面后,相应脚本即可自动运行,从而对页面 DOM 进行操作。

Manifest 的 content_scripts 的属性包括:




下面先看一个百度首页的例子,我们编写一个插件让百度首页的搜索按钮无法点击。

首先创建 Manifest 文件,内容如下:

{
    "manifest_version": 2,
    "name": "永远点不到的搜索按钮",
    "version": "1.0",
    "description": "让你永远也点击不到百度的搜索按钮",
    "content_scripts": [
        {
            "matches": ["*://www.baidu.com/"],
            "js": ["js/cannot_touch.js"]
        }
    ]
}

content_scripts 属性中我们定义了一个匹配规则,当 URL 符合
*://www.baidu.com/ 规则的时候,就将 js/cannot_touch.js 注入到页面中。其中 * 代表任意字符,这样当用户访问 http://www.baidu.com/
https://www.baidu.com/ 时就会触发脚本。

右键单击搜索按钮,选择“审查元素”,我们发现百度搜索按钮的 id
'su'

接下来我们开始编写 cannot_touch.js

function btn_move(el, mouseLeft, mouseTop){
    var leftRnd = (Math.random()-0.5)*20;
    var topRnd = (Math.random()-0.5)*20;
    var btnLeft = mouseLeft+(leftRnd>0?100:-100)+leftRnd;
    var btnTop = mouseTop+(topRnd>0?30:-30)+topRnd;
    btnLeft = btnLeft<100?(btnLeft+window.innerWidth-200):(btnLeft>window.innerWidth-100?btnLeft-window.innerWidth+200:btnLeft);
    btnTop =  btnTop<100?( btnTop+window.innerHeight-200):(btnTop>window.innerHeight-100?btnTop-window.innerHeight+200:btnTop);
    el.style.position = 'fixed';
    el.style.left = btnLeft+'px';
    el.style.top = btnTop+'px';
}

function over_btn(e){
    if(!e){
        e = window.event;
    }
    btn_move(this, e.clientX, e.clientY);
}

document.getElementById('su').onmouseover = over_btn;

由于 Manifest 将此脚本的位置指定到了 js/cannot_touch.js,所以要记得将这个脚本保存到扩展文件夹中的 js 文件夹下,否则会出现错误。

加载插件后我们看到运行效果,搜索按钮会偏移。

上一篇 下一篇

猜你喜欢

热点阅读