首页 > 其他分享 >模拟浏览器搜索框

模拟浏览器搜索框

时间:2022-11-03 10:15:29浏览次数:55  
标签:浏览器 innerHTML replace 搜索 query let preQuery 模拟

前言

  公司要求写搜索框专门搜索页面上的sql语句,可以自定义搜索框的行为和样式,所以我在实现之后就把基本的思路分享一下。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    selectElement {
      background-color: yellow;
    }
  </style>
</head>

<body>
  <div class="wrap">SELECT * FROM USERTABLE</div>
  <br />
  <br />
  <br />
  <input type="text" oninput="searchFn(event,value)" />
</body>
<script>
  let preQuery = ''; // 上一次搜索的内容
  let wrapDom = ''; // 搜索区域的dom元素

  function searchFn(dom, query) {
    let wrap = wrapDom || document.querySelector('.wrap');
    let innerHTML = wrap.innerHTML;
    innerHTML = innerHTML.replace(/<selectElement>/ig, '');
    innerHTML = innerHTML.replace(/<\/selectElement>/ig, '');

    // if (!preQuery) {
    //   let preReg = new RegExp('' + preQuery + '', 'g');
    //   innerHTML = innerHTML.replace(preReg, preQuery);
    // }

    if (query) {
      let reg = query.replace(/\+/g,'\\+').replace(/\*/g,"\\*");
      innerHTML = innerHTML.replace(new RegExp(reg, "g"), `<selectElement>${query}</selectElement>`);
    }

    wrap.innerHTML = innerHTML;
    // preQuery = query;
  }
</script>

</html>

  

  上述代码只是雏形,后续要增加一些正则的判断,以及样式的改动都是可以根据上面的代码为基础修改就好啦,主要的作用在于replace(preReg, preQuery),当然要做的更逼真的话还可以获取dom元素的高度,做上下箭头,然后点击触发浏览器的滚动事件,到达指定位置,思路有了实现起来都不难。

 

标签:浏览器,innerHTML,replace,搜索,query,let,preQuery,模拟
From: https://www.cnblogs.com/zxd66666/p/16853473.html

相关文章

  • 浏览器上验证xpath元素是否正确
    一、验证元素定位Chrome的console可以用来验证XPath和CSS。1.验证XPath1.输入:$x(“your_xpath_selector”)2.输入完毕后,点击回车键;如果你的语句是正确的,会返回该css对......
  • 模拟退火
    模拟退火很多时候我们会被要求求一些函数的最值问题,但是又因为值域很大,是连续的乃至无穷的,那么搜索是搜不出来的,对于这种问题,一般来说爬山算法是很可以的,比如下边的图......
  • 实例034 使用goto语句在数组中搜索指定图书
      usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usi......
  • 2022.11.2 模拟赛题解
    简要题意给定一棵\(n\)个节点的有根树,树根为\(1\)号节点,每个结点有一个权值\(a_i(|a_i|\leq10^9)\),求包含\(1\)的前\(k\)小的连通块的权值。简要题解前置内......
  • NOIP模拟1
    T1.语言签到题。可以直接\(O(n)\)预处理出来前缀和,但我用了线段树,所以多了一个\(log\)的复杂度。题意转化:找到一个位置为动词,上一个位置为名词,句子末尾是名词,其他地方是......
  • 谷歌浏览器插件MV3报错"Uncaught ReferenceError: window is not defined"
    出错配置mv3后,在后台代码background.js使用DOMPurify发现无法访问window,会一直报错UncaughtReferenceError:windowisnotdefined查看后台,globalThis变成了一个叫Ser......
  • C语言 模拟实现字符串函数 看着一篇够了
    C语言模拟实现字符串操作的库函数求字符串长度strlen思路1.如果碰到\0就代表字符串已经到了末尾size_tmy_strlen(constchar*str){ assert(str!=NULL); //......
  • 无需插件,巧用Chrome浏览器实现对整个网页的高清截屏
    文/王不留(微信公众号:王不留) 我们有时需要截取网页的全图。发现一个简单方法。记录之。 这个方法需要使用Chrome浏览器。 1、输入网址: ​​https://www.google.cn/chro......
  • ida flare_emu模拟执行批量解密字符串(Orchard_Botnet)
    ......
  • NOIP模拟1
    A.语言想到小学英语老师一遍遍地强调:每个句子有且只有一个动词!!忽然给了我灵感。发现不是动词的部分AN可以自由组合,A可以这样连续A(AN),A(A(AN)),唯一不合法的情况就是A在末......