zoukankan      html  css  js  c++  java
  • 油猴脚本:使用layer.js mobx lodash jquery

    油猴脚本开发中使用layer.js  mobx  lodash  jquery;

    实现功能:1,油猴脚本中弹窗;2,修改状态自动更新页面;

    效果截图:

     油猴脚本:

    // ==UserScript==
    // @name         __test
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @run-at       document-body
    // @match        http*://news.baidu.com/*
    // @match        http*://www.baidu.com/*
    // @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js
    // @require      https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.19/lodash.js
    // @require      https://cdn.bootcdn.net/ajax/libs/mobx/5.15.5/mobx.umd.js
    // @require      https://cdn.bootcdn.net/ajax/libs/layer/3.1.1/layer.min.js
    // @require      https://cdn.bootcdn.net/ajax/libs/dayjs/1.8.32/dayjs.min.js
    // @grant        GM_addStyle
    // ==/UserScript==
    
    // window._jquery = $.noConflict(true);
    // window._lodash = _.noConflict();
    
    (function () {
      'use strict';
    
      console.log('jquery', $.fn.jquery)
      console.log('lodash', _)
      console.log('mobx', mobx)
      console.log('layer', layer)
      console.log('dayjs', dayjs)
    
      //引入layer弹窗css
      $(document.body).append(`<link href="https://cdn.bootcdn.net/ajax/libs/layer/3.1.1/theme/default/layer.min.css" rel="stylesheet">`)
    
      //节点ID
      let appIdStr = `_monkey_app_`
      let appId = `#${appIdStr}`
    
      //样式
      $(document.body).append(`
    <style>
    .monkey-app {
    position: relative;
    background-color: #fff;
    top: 0;
    right: 0;
    /* 300px;*/
    /*height: 300px;*/
    /*border: 1px solid #a1a1a1;*/
    box-shadow: 0 0 1px rgba(0,0,0,.3);
    z-index: 999999;
    font-size: 14px;
    color: #000;
    margin: 15px;
    }
    </style>
      `)
    
      //添加主节点
      $(document.body).append(`<div id="${appIdStr}" class="monkey-app"></div>`)
    
      //响应式数据
      let store = mobx.observable({
        name: 'name',
        arr: [1, 2, 4, 6],
        _: _,
      })
    
      //lodash模板
      let temp = `
    
    <h1><%= name %></h1>
    <ul>
    <% _.each(arr, item => { %>
    <li><%= item %></li>
    <% }) %>
    </ul>
        
      `
    
      //响应数据变化
      mobx.autorun(() => {
        $(`${appId}`).html(_.template(temp)(store))
      })
    
      //修改状态
      setTimeout(() => {
        store.name = 'aaaa'
      }, 1000)
    
      //修改状态
      setTimeout(() => {
        store.arr.push('add_1')
        store.arr.push('add_2')
      }, 2000)
    
      //修改状态
      setInterval(() => {
        store.arr[0] = dayjs().format('YYYY-MM-DD hh:mm:ss')
      }, 1000)
    
      //弹窗:捕获页
      layer.open({
        type: 1,
        shade: false,
        title: '捕获页',
        closeBtn: 0, //不显示关闭按钮
        shadeClose: false, //开启遮罩关闭
        offset: 'rt', //右上角弹出
        maxmin: true, //开启最大化最小化按钮
        content: $(appId), //捕获的元素,注意:最好该指定的元素要存放在body最外层,否则可能被其它的相对元素所影响
        cancel: function () {
          layer.msg('捕获就是从页面已经存在的元素上,包裹layer的结构', {time: 5000, icon: 6});
        }
      });
    
    })();

    本文地址:

    https://www.cnblogs.com/stumpx/p/13474157.html

  • 相关阅读:
    第一次冲刺02
    第一次冲刺01
    Android源码分析(十四)PackageManagerService服务分析
    Android源码分析(十三)ActivityManagerService服务分析
    Android源码分析(十二)ServiceManager服务分析
    Serializable和Parcelable之序列化
    ViewPager 相关使用
    AIDL介绍以及简单使用
    Android 四大组件 (五) 第五大组件
    Android 源码分析(十一) 事件传递机制
  • 原文地址:https://www.cnblogs.com/stumpx/p/13474157.html
Copyright © 2011-2022 走看看