写个简单的chrome插件-京东商品历史价格查询

说chrome插件编写的先关文章, 首推小茗的【干货】Chrome插件(扩展)开发全攻略

有非常完善的理论,引用和demo代码。

但是还是建议看官方的 chrome extensions

chrome 插件是什么,能做什么

增强浏览器功能,HTML、CSS、JS、图片等资源组成的一个.crx后缀的压缩包。

从界面到网络请求,到本地资源的交互,都是统统可以的。

比如:

  • ColorZilla: 取色工具
  • Octotree: github 项目的右边导航
  • FeHelper: Web 前端助手, json, 二维码,加密等等
  • React Develop tools: React 调试工具
  • Tampermonkey: 油猴脚本

核心五部分

  • Manifest

    声明文件

  • Background Script

    运行在后台的脚本, 当然不仅仅是脚本, 也有html

  • UI Elements

    browser action 和page action, omnibox, popup等等

  • Content Script

    运行在当前内容页面的脚本

  • Options Page

    配置页面

官方资料 (需要FQ)

你有上面这四个链接, 你基本无所不知,无所不能了。

一个简单的京东商品历史价格查询

本人喜欢在京东买东西,各种活动很累, 很烦。 因为没有比较,就没有伤害。 以后喜欢借助慢慢买查看,但是要来回切换, 麻烦。

其实已经有很多比较成熟的比价插件了。比如

  • 惠惠购物助手
  • 懒人比价购物助手
  • 购物党
  • 淘帮手
  • 等等

但是,个人保持学习态度, 写一个极其简单的,点击一下, 一条曲线。

正题

项目结构

项目结构如下, 本插件核心就是

  • manifest.json 申明文件
  • index.js 执行网络请求,解析数据,渲染图标

manifest

{
    //必须为2
    "manifest_version": 2,
    "name": "JD Price History",
    "version": "1.0.0",
    "description": "京东商品历史价格查询",
    // 右上角图标
    "browser_action": {
        "default_icon": {
            "128": "icons/icon128.png",
            "16": "icons/icon16.png",
            "48": "icons/icon48.png"
        },
        "default_title": "检查商品的历史价格"
    },
    // 脚本
    "content_scripts": [
        {
            "matches": [
                "http://*/*",
                "https://*/*"
            ],
            "js": [
                "content/echarts.common.min.js",
                "content/md5.js",
                "content/encrypt.js",
                "content/index.js"
            ],
            // 运行实际
            "run_at": "document_end"
        }
    ],
    // 扩展程序网站
    "homepage_url": "https://github.com/xiangwenhu",
    "icons": {
        "128": "icons/icon128.png",
        "16": "icons/icon16.png",
        "48": "icons/icon48.png"
    },
    // 权限,其实这里不需要那么多
    "permissions": [
        "contextMenus",
        "tabs",
        "notifications",
        "webRequest",
        "webRequestBlocking",
        "storage",
        "https://*/",
        "http://*/",
        "https://*.manmanbuy.com/",
        "http://*.manmanbuy.com/"
    ]

}

比较有用的是

  • browser_action 右上角的标
  • permissions 权限,不然你发送请求是不会成功
  • content_scripts 内容脚本

content script

我们调用慢慢买的一个接口, 需要传入类似这样的地址http://item.jd.com/4813300.html,请求这个地址就能获得历史数据, 但是需要引入慢慢买的两个加密文件。

function getRequestUrl(requestUrl) {
    requestUrl = requestUrl.split(‘?‘)[0].split(‘#‘)[0];
    var url = escape(requestUrl);
    var token = d.encrypt(requestUrl, 2, true);

    var urlArr = [];
    urlArr.push(‘https://tool.manmanbuy.com/history.aspx?DA=1&action=gethistory&url=‘);
    urlArr.push(url);
    urlArr.push(‘&bjid=&spbh=&cxid=&zkid=&w=951&token=‘);
    urlArr.push(token);

    return urlArr.join(‘‘);

}

封装简单的http_get请求,这里你应该是可以引入jQuery,网上有人说要拦截请求,我这里正常的发送是没有问题的。

function http_get(options) {
    var timeout = options.onTimeout
    var url = options.url;
    var success = options.success;
    var error = options.error;

    var xhr = new XMLHttpRequest();
    xhr.timeout = 10000;
    xhr.ontimeout = function (event) {
        console.log(‘request url‘ + url + ‘, timeout‘);
        timeout && timeout()
    }
    xhr.open(‘GET‘, url, true);
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4 && xhr.status == 200) {
            success && success(xhr.responseText);
        }
    }
    xhr.onerror = function () {
        error && error(xhr.statusText)
    }
    xhr.send();
}

基本发送http请求, 解析数据就好了。

最后发一张图

开发插件本身内容还是很复杂的, 需要慢慢品读。

最后送上源码地址:chromeExt-jd-price-history

原文地址:https://www.cnblogs.com/cloud-/p/9954823.html

时间: 2024-10-31 01:46:24

写个简单的chrome插件-京东商品历史价格查询的相关文章

开发一个简单的chrome插件-解析本地markdown文件

准备软件环境 1. 软件环境 首先,需要使用到的软件和工具环境如下: 一个最新的chrome浏览器 编辑器vscode 2. 使用的js库 代码高亮库:prismjs https://prismjs.com/download.html markdown解析库:marked.min.js https://github.com/markedjs/marked 搭建工程 创建一个md-reader目录,进入md-reader目录 1. 目录结构 然后,创建需要的文件 md-reader |----sr

菜鸟写的第一个chrome插件

一.新建一个文件夹,用来放插件的代码 二.首先新建配置文件manifest.json 1 // 开发参考:http://open.chrome.360.cn/extension_dev/overview.html 2 // 字段说明参考:http://open.chrome.360.cn/extension_dev/manifest.html 3 { 4 "name": "myTB Name", // 必填 5 "version": "

写一个简单的JQ插件(例子)

虽然现在 vue angular react 当道啊但是那 JQ还是有一席之地很多很多的小单位啊.其实还会用到 我也放一个例子吧虽然我也不是很肯定有没有人写的比我更好啊但是我相信 我这个还是蛮实用的 话不多说 丢代码 JQ插件标准的封装代码如下,首先需要闭包: <scripttype="text/javascript"> (function ($) {  //这里放入插件代码 })(jQuery); </script> 这是jQuery官方的插件开发规范,这样写

自己写的简单的FullPage插件

用js的定时器写的小玩意... <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <div id="container"> <div id="page1"> <p&g

08.01《jQuery》——cookie插件的简单应用和自己写的简单更换颜色插件

1.Cookie是网站设计者放置在客户端的小文本文件.实现:存储用户曾经浏览过的产品列表,记住用户喜欢浏览哪类新闻等. 在用户允许的情况下,还可以存储用户的登录信息,使得用户在访问网站时不必每次都键入这些信息. 首先上代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="../jqu

(图解)接口测试从未如此简单 - Postman (Chrome插件)

一个非常有力的Http Client工具用来测试Web服务的, 我这里来介绍如何用它测试restful web service 注:转载请注明出处http://www.cnblogs.com/wade-xu/p/4228954.html 安装 进入Chrome的设置->More tools->Extensions 点击最下面的Get more extensions 搜索Postman 选择第一个点击 点击Launch APP 如何使用Postman做接口测试 填写service url 选择m

接口测试从未如此简单 - Postman (Chrome插件)

一个非常有力的Http Client工具用来测试Web服务的, 我这里来介绍如何用它测试restful web service 安装 进入Chrome的设置->More tools->Extensions 点击最下面的Get more extensions 搜索Postman 选择第一个点击 点击Launch APP 如何使用Postman做接口测试 填写service url 选择method, 比如 GET 这个请求需要参数,点击URL params 填好参数 参数填好之后,工具会在URL

嫌弃浏览器自带弹出框,写个简单的jq自定义弹窗插件

最近做项目写个表单验证,提交信息验证有错误的时候,用了最懒的方法,直接把错误提示用alert()弹出框弹出来,于是老大看完后给了这个表情... 确实,自带弹窗样式丑不能自定义这些问题困扰着很多用户,而且在同浏览器有不同的表现, 有这样的:.. 有这样的:.. 还有这样的:.. 还有这样的: 相信做前端的都很熟悉这些面孔~ 不统一风格的弹窗直接拉低了整个网站的逼格.. 好,那就写个简单的JQ插件来装饰一下吧. JQ插件标准的封装代码如下,首先需要闭包: <script type="text/

chrome 浏览器插件开发(二)—— 通信 获取页面 编写chrome插件专用的库

在chrome插件的开发过程中,我遇到了一些问题,在网上找了不少文章,可能是浏览器升级的原因,有一些是有效的也有无效的.下面我简单的分享一下我遇到的坑,以及我把这些坑的解决方案整理而成的js库 —— crxTool . 一.坑和铲子 1.browser action或page action与content script通信 在网上找了不少方法,最后选择的方法如下: 发送消息: 1 var send= function(data, cb){ 2 chrome.tabs.query({active: