网页与chrome插件实现交互,网页通过插件调取接口获取数据

最近有个需求需要网页调用插件,实现获取淘宝数据

大概思路如下:

  • 插件匹配网站url注入js
  • 网页上通过postmessage发送数据到content.js
  • content.js 中通过监听 postmessage获取参数,然后获取淘宝数据,然后再回传给网页
  • 网页监听content.js 传递的消息获取数据

网页端封装请求

export function cjPost(obj) {
  return new Promise((resolve, reject) => {
    let { funName, postData, timeout, isLoading = true } = { ...obj };
    let timer = '';
    obj['type'] = 'vue-send';//发送
    obj['sign'] = getSign();//签名
    let fun = (e) => {
      if(e.data.sign && e.data.sign == obj.sign && e.data.type && e.data.type == 'plugin-send' ) {
        setLoad(isLoading);
        let res = e.data.data
        // 滑块验证
        if(isHk(res)) {
          openHk(res.data.url);
        }else{
          resolve(res);
        }
        removeEventListener('message',fun);
        clearTimeout(timer);
      }
    }
    openLoading(isLoading);
    postMessage(obj);
    addEventListener('message',fun)
    //超时销毁监听
    timer = setTimeout(() => {
      removeEventListener('message',fun);
      reject({
        state: false,
        msg: '请求超时'
      });
    }, timeout || TIMEOUT);
  })
}

插件端消息封装

$(function() {

	// 监听网页发送
	addEventListener('message', async function(e) {
		if (e.data.type && e.data.type == 'vue-send') {
			let funName = e.data.funName;
			let postData = e.data.postData ? JSON.stringify(e.data.postData) : '';
			if(!funName) {return}
			let res = await eval(funName + '('+ postData +')');
			let data = {
				type: 'plugin-sed',
				sign: e.data.sign,
				data: res,
			}
			postMessage(data);
		}
	})
	//淘宝h5接口调用函数
	

})

相关推荐

  1. Chrome开发

    2024-04-25 08:24:01       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 08:24:01       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 08:24:01       97 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 08:24:01       78 阅读
  4. Python语言-面向对象

    2024-04-25 08:24:01       88 阅读

热门阅读

  1. 搭建git私人仓库

    2024-04-25 08:24:01       31 阅读
  2. querystring模块、formidable模块的介绍

    2024-04-25 08:24:01       35 阅读
  3. 【Vue3】ref对象类型的响应式数据

    2024-04-25 08:24:01       39 阅读
  4. 双机部署学习

    2024-04-25 08:24:01       35 阅读
  5. 图论基础知识 并查集/例题

    2024-04-25 08:24:01       36 阅读
  6. 树形dp,LeetCode 2385. 感染二叉树需要的总时间

    2024-04-25 08:24:01       33 阅读
  7. 猎聘爬虫(附源码)

    2024-04-25 08:24:01       37 阅读