js定时器监控页面iframe中input标签中填写身份证

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zwl18210851801/article/details/82011570
// ==UserScript==
// @name         监控插件
// @namespace    localhost
// @version      0.0.2
// @description  监控插件
// @author       zwl
// @include      *://127.0.0.1:8080/*
// @grant        GM_xmlhttpRequest
// ==/UserScript==

(function() {
    'use strict';
    var myInterval ;
	$(document).on("click",".close-btn",function(){
	  $('.overlay,.check-tip').fadeOut(200);
	  setTimeout(function(){
		console.log('关弹窗继续检测')
		if ($(".overlay").is(":hidden")) {
		  //$('#listenStatus').html('监控已启动').css('color','#d2f77a')
		  iframeOnloadEvent(1, document);
		}
	  }, 10000)
	})

     function addModal(msg, link,value) {
      $('body').css({ 'overflow-y': 'hidden', 'height': '100%' });
      $('body').append('<div class="check-tip" style="display: none;margin: auto;position: absolute;z-index:222222;top: 0;left: 0;right: 0;bottom: 0;width: 600px;height: 500px;background: #f39631;border: 5px solid #000;text-align: center; padding: 50px;overflow-y: scroll;">' +
        '<div  class="close-btn" style="position:absolute;width:120px;height:40px;right:0;top:0;background:#000;color:red;text-align:center;font-size:20px;cursor: pointer;padding-top:5px">关闭窗口</div>' +
        '<div style="margin-bottom:30px;text-align:center;"><h1 style="padding:20px">监控检测结果</h1><a style="color:#fff;border:2px solid #fff;padding:10px 50px;text-decoration: none;" target="_blank" href="' + link + '">点击查看详情 ' + value +'</a></div>' +
        '<p style="line-height:30px">' + msg + '</p>' +
        '</div>' +
        '<div class="overlay" style="display: none;position: fixed;z-index:111111;top: 0;left: 0;right: 0;bottom: 0;background: rgba(0, 0, 0, .6);"></div>');
    }

    function checkValue (value) {
        var reg = /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/;
        if (reg.test(value)) {
            console.log("=====【检测符合的身份证】=====", value);
            var url="http://127.0.0.1/query?id="+value;
            GM_xmlhttpRequest({
                 method: "get",
                 url: url,
                 onload: function(res) {
                    if (res.status == 200) {
						var text = res.responseText;
						var json = JSON.parse(text);
						console.log(json);
						if (json.code === "0") {
							var msg = '';
							if (json.allLog) {
								msg = json.allLog;
							} else {
								msg = json.sxbzxrmd ? json.sxbzxrmd : '' + json.ycjyml ? '<br/>' + json.ycjyml : '';
							}
							var link = json.link || '';
							var value = json.idCardNo || '';
							addModal(msg, link, value)
							if ($(".overlay").is(":hidden")) {
								//$('#listenStatus').html('监控检测成功请及时处理,关闭弹窗10s后再次检测').css('color','#fbbc05')
								$('.overlay,.check-tip').fadeIn(200);
							}
							//关闭定时器
                            clearInterval(myInterval);
						}
					}
				}
			});
		}
	}

	function getInputValue (arr) {
	  if (arr.length) {
		for (var i = 0; i < arr.length; i++) {
		  checkValue(arr[i].value);
		}
	  }
	}

	function getIframeAllInput (parentFrame) {
	  var _text = {};
	  _text.input = $(parentFrame).contents().find("input");
	  _text.textarea = $(parentFrame).contents().find("textarea");
	  getInputValue(_text.input);
	  getInputValue(_text.textarea);
	}

	/**
	 * iframe 准备监听
	 * @param {} currentIframe 当前 iframe
	 * @param {*} level 层级
	 */
	function iframeAttachReady (currentIframe, level) {
	  console.log("------------ 开始监听 ------------");
	  myInterval = setInterval(function () {
		iframeOnloadEvent(level + 1, currentIframe);
		getIframeAllInput(currentIframe);
	  }, 5000);
	}

	/**
	 * iframe dom 加载完成
	 * @param {*} currentIframe
	 * @param {*} level
	 */
	function iframeAttachEvent (currentIframe, level) {
	  iframeAttachReady(currentIframe, level);
	}

	/**
	 * 获取传入级的全部子 iframe
	 * @param {number} level 需要获取 iframe 的层级,top 层为 1
	 * @param {*} parentFrame 传入的父级 iframe
	 */
	function getIframeArray (level, parentFrame) {
	  var _getArray = []; // query 的 iframe
	  var _returnArray = []; // 重组后返回的 iframe 数组
	  if (parentFrame) {
		// 有父级 iframe
		_getArray = $(parentFrame).contents().find("iframe");
		_getArray = _getArray ? _getArray : [];
	  } else {
		// 无父级 iframe
		_getArray = $(document).find("iframe");
		_getArray = _getArray ? _getArray : [];
	  }
	  console.log("第【" + level + "】级 Frame 共【" + _getArray.length + "】个");
	  if (_getArray.length) {
		for (var i = 0; i < _getArray.length; i++) {
		  _returnArray.push(_getArray[i]); // 重组
		}
	  }
	  return _returnArray;
	}

	/**
	 * 获取 iframe dom
	 * @param {*} level
	 * @param {*} parentFrame
	 */
	function iframeOnloadEvent (level, parentFrame) {
		setTimeout(function () {
		  var currentIframes = getIframeArray(level, parentFrame);
		  if (currentIframes && currentIframes.length) {
			for (var i = 0; i < currentIframes.length; i++) {
			  iframeAttachEvent(currentIframes[i], level);
			  getIframeAllInput(currentIframes[i]);
			}
		  }
		}, 0);
	}

	iframeOnloadEvent(1, document);
    // Your code here...
})();

一、脚本管理工具安装

 访问网址https://tampermonkey.net/

猜你喜欢

转载自blog.csdn.net/zwl18210851801/article/details/82011570