精华内容
下载资源
问答
  • 删除consul上的节点

    2020-04-14 20:33:48
    微服务使用consul如何删除上面的一个节点 首先:进入consul界面查看节点内容 通过:http://ip:port/ui/dc1/services 访问consul页面,在搜索框搜索要删除的数据 搜索到结果,点击进入想要删除的节点中。 ...

    微服务中使用consul如何删除上面的一个节点
    首先:进入consul界面查看节点内容
    通过:http://ip:port/ui/dc1/services 访问consul页面,在搜索框中搜索要删除的数据
    在这里插入图片描述
    搜索到结果,点击进入想要删除的节点中。
    在这里插入图片描述
    进入节点:
    在这里插入图片描述
    对于每一个节点都会显示出来,我们记住要删除的节点的ID
    进入consul的安装服务器:运行以下命令
    [root@xxxxxx]#curl --request PUT http://ip:port/v1/agent/service/deregister/ID
    其中,ip和端口是consul的服务和端口,ID是记录下来的ID

    展开全文
  • 为了防止截图等安全问题,在web项目页面中生成一个平铺全屏水印 要求水印内容为用户名,水印节点用户不能通过开发者工具等删除 效果 如上图 在body节点下插入水印DOM节点,水印节点覆盖在页面最上层但不影响页面...

    需求

    1504647-20181213113935818-1005846353.png

    • 为了防止截图等安全问题,在web项目页面中生成一个平铺全屏的水印
    • 要求水印内容为用户名,水印节点用户不能通过开发者工具等删除

    效果

    • 如上图
    • body节点下插入水印DOM节点,水印节点覆盖在页面最上层但不影响页面正常操作
    • 在通过js或者用户通过开发者工具删除或修改水印节点时自动复原

    原理

    • 通过canvas画出节点需生成水印的文字生成base64图片
    • 生成该水印背景图的div节点插入到body下,通过jsMutationObserver方法监听节点变化,再自动重新生成

    生成水印DOM节点

    
    // 生成水印DOM节点    
    init () {
          let canvas = document.createElement('canvas')
          canvas.id = 'canvas'
          canvas.width = '200' // 单个水印的宽高
          canvas.height = '130'
          this.maskDiv = document.createElement('div')
          let ctx = canvas.getContext('2d')
          ctx.font = 'normal 18px Microsoft Yahei' // 设置样式
          ctx.fillStyle = 'rgba(112, 113, 114, 0.1)' // 水印字体颜色
          ctx.rotate(30 * Math.PI / 180) // 水印偏转角度
          ctx.fillText(this.inputText, 30, 20)
          let src = canvas.toDataURL('image/png')
          this.maskDiv.style.position = 'fixed'
          this.maskDiv.style.zIndex = '9999'
          this.maskDiv.id = '_waterMark'
          this.maskDiv.style.top = '30px'
          this.maskDiv.style.left = '0'
          this.maskDiv.style.height = '100%'
          this.maskDiv.style.width = '100%'
          this.maskDiv.style.pointerEvents = 'none'
          this.maskDiv.style.backgroundImage = 'URL(' + src + ')'
          // 水印节点插到body下
          document.body.appendChild(this.maskDiv)
        },

    监听DOM更改

    
    // 监听更改,更改后执行callback回调函数,会得到一个相关信息的参数对象
        Monitor () {
          let body = document.getElementsByTagName('body')[0]
          let options = {
            childList: true,
            attributes: true,
            characterData: true,
            subtree: true,
            attributeOldValue: true,
            characterDataOldValue: true
          }
          let observer = new MutationObserver(this.callback)
          observer.observe(body, options) // 监听body节点
        },

    使用

    • 直接引入项目任何组件中使用即可
    • 组件prop接收三个参数
    
      props: {
        // 显示的水印文本
        inputText: {
          type: String,
          default: 'waterMark水印'
        },
        // 是否允许通过js或开发者工具等途径修改水印DOM节点(水印的id,attribute属性,节点的删除)
        // true为允许,默认不允许
        inputAllowDele: {
          type: Boolean,
          default: false
        },
        // 是否在组件销毁时去除水印节点(前提是允许用户修改DOM,否则去除后会再次自动生成)
        // true会,默认不会
        inputDestroy: {
          type: Boolean,
          default: false
        }
      }
    • inputText(String):需要生成的水印文本,默认为'waterMark水印'
    • inputAllowDele(Boolean):是否需要允许用户删除水印DOM节点,true为允许,默认不允许
    • inputDestroy(Boolean):是否在组件销毁时去除水印节点,true会,默认不会,(只有在inputAllowDele为ftrue时才能生效)
    • 如果需要修改水印大小,文字,颜色等样式,可直接进入组件中按注释修改

    小结

    • 工作写了个相关组件,复用率挺高就封装了下,没有经过严格测试,可当做参考使用,有需要的朋友欢迎下载源码使用相关GitHub代码
    • 当然在浏览器端无论怎样也不能完全防止用户的的行为,但也能满足多数需求场景

    原文地址:https://segmentfault.com/a/1190000017297876

    转载于:https://www.cnblogs.com/datiangou/p/10113107.html

    展开全文
  • 在我们网页开发过程,难免会遇到,用户会在页面删除一些信息过程,如:多少行记录,以及一些会话什么,今天我在这里以10000个dom节点的删除做示例 1、为什么会有这样问题出现 今天早上起床删除qq好友...

    0、今天我们要解决什么问题

    在我们网页开发的过程中,难免会遇到,用户会在页面删除一些信息的过程,如:多少行记录,以及一些会话什么的,今天我在这里以10000个dom节点的删除做示例

    1、为什么会有这样的问题出现

    今天早上起床删除qq好友的聊天记录,发现上千条记录大概,1s不到删除了,但反之微信大概10s多吧,究其原因,原来qq是删除会话而已,记录还都在,而微信删除了记录。



    2、解决思路

    其实到这里已经得到思路,那么就是假删除,所谓的假删除,就是先让用户删除的内容隐藏,然后再执行删除,很明显,将dom节点display设为none比删除节点来得快。

    3、源代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <input type="button" value="加载10000条节点" οnclick="fnAddDoms()">
    <input type="button" value="删除所有节点方法一" οnclick="fnDeleteDoms0()">
    <input type="button" value="删除所有节点方法二" οnclick="fnDeleteDoms1()">
    <input type="button" value="删除所有节点方法三" οnclick="fnDeleteDoms2()">
    <div id="div">
    </div>
    
    <script>
    
        function fnAddDoms() {
            var domDiv = document.getElementById('div');
    
            for (var i = 0; i < 10000; i++) {
                var domSub = document.createElement('div');
                domSub.setAttribute('class', 'subDiv');
                domSub.innerHTML = "111";
                domDiv.appendChild(domSub);
            }
        }
        function fnDeleteDoms0() {
            var domDiv = document.getElementById('div');
            var dStart = new Date().getTime();
            domDiv.innerText = null;
            var dEnd = new Date().getTime();
            alert('耗时:' + (dEnd - dStart) + 'ms');
        }
        function fnDeleteDoms1() {
            var domDiv = document.getElementById('div');
            var domSubDivs = document.getElementsByClassName('subDiv');
    
            var dStart = new Date().getTime();
            var j = domSubDivs.length;
            for (var i = j - 1; i >= 0; i--) {
                domSubDivs[i].style.display = 'none';
            }
            var dEnd = new Date().getTime();
    
            alert('耗时:' + (dEnd - dStart) + 'ms');
    
            for (var i = j - 1; i >= 0; i--) {
                domDiv.removeChild(domSubDivs[i]);
            }
        }
    
        function fnDeleteDoms2() {
            var domDiv = document.getElementById('div');
            var domSubDivs = document.getElementsByClassName('subDiv');
    
            var dStart = new Date().getTime();
            var j = domSubDivs.length;
            for (var i = j - 1; i >= 0; i--) {
                domDiv.removeChild(domSubDivs[i]);
            }
            var dEnd = new Date().getTime();
    
            alert('耗时:' + (dEnd - dStart) + 'ms');
        }
    
    
    </script>
    </body>
    </html>


    总结:也许看了代码大家发现,最终我还是删除了,或者直接给div里面的内容复制为空了,同样耗时了,但是用户其实很多时候并不关心你怎么处理的,用户关心的只是我看到的,所以这里只是提供一种思路,在增加用户体验的过程中,是不是可以改变一下思路,“欺骗”一下用户的视觉呢?

    展开全文
  • DOM 文档对象模型 dom赋予了我们操作页面的能力 js会把html页面的内容解析成为dom树...创建节点,删除节点,… 1.如何获取节点 通过元素id获取节点 getElementById("id值") 只能获取一个,唯一因为id是唯一 ...

    DOM 文档对象模型
    dom赋予了我们操作页面的能力
    js会把html页面的内容解析成为dom树的结构,节点构成的
    创建节点,删除节点,…

                1.如何获取节点
                    通过元素的id获取节点  getElementById("id值")
                        只能获取一个,唯一的因为id是唯一的
                        主语:document
                    通过标签名字获取节点  getElementsByTagName("标签名")
                        获取一组元素
                        主语:document ,父级节点
                    通过className获取节点 getElementsByClassName("class属性值")
                        获取一组元素
                         主语:document ,父级节点
                    通过name属性值获取节点
                2.操作节点
                3.完成案例
    

    创建节点

    1.创建节点 createElement(‘元素名’)

            2.插入节点appendChild
                父节点.appendChild(子节点)
                参数:要插入的节点
                王父节点的最后追加子节点
    
            3.2.插入节点insertBefore(节点1,节点2)
                父节点.insertBefore(节点1,节点2)
                参数:
                    节点1:要插入的节点
                    节点2:插入的位置
                    把节点1插入到节点2之前
                    2个参数必须都存在
               当第二个参数为null|undefined时候,作用和appendChild相同都是追加
    

    表单元素获取值 value
    普通标签获取标签对中的内容 innerHTML innerText

    替换节点 replaceChild(node1,node2)
    参数:
    node1 新节点
    node2 被替换的节点
    主语:父节点
    返回值:被替换的节点
    如果是已存在的节点进行替换,相当与剪切

    克隆节点 cloneNode(boolean)
    主语: 要克隆的元素节点
    参数: true 子孙节点同时克隆
    false 不克隆子孙节点 默认
    可以克隆属性,样式,不能克隆js功能

    删除节点 父节点.removeChild(被删除的节点)
    表单节点
    1.获取表单中的元素节点
    表单节点.name属性值
    2.获取表单元素的值
    表单元素节点.value
    3.判断是否被选中 单选,多选,下拉框

            表单中常用事件:
                oninoput
                onchange
                *** 表单的提交方式
                1) submit 直接提交
                2) 表单添加onsubmit,事件中校验是否满足提交的条件,如果不满足return false,不允许提交-->使用要reuturn 函数();
                onsubmit 表单的事件,当表单被点击submit时触发事件
                onreset  表单的事件
                3)button按钮+submit() 按钮触发点击事件,事件判断,满足条件就调用submit()提交
                submit()
                reset()
    
    展开全文
  • 然而layui.tree的原始机制是,必须重新加载整个树的数据再渲染,这样就会导致展开的节点全收缩回去,而不是刚好展开到该父部门位置; 这样就有2个问题亟需优化: 1)部门树数据量大时,渲染慢。 2)父部门如何.
  • 众所周知,layui.tree的树形控件,在渲染树节点时,需要后台准备好整个组织树的数据;...然而layui.tree的原始机制是,必须重新加载整个树的数据再渲染,这样就会导致展开的节点全收缩回去,而不是...
  • DOM对象 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。...HTML 元的,Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问,DOM独立于具...
  • 这是个无聊问题吗当提出这个问题时,我第一反应是——我还真是无聊 ‍♂️转念一想,em~,好像事情没有这么简单如果直接选择所有div再遍历删除的话,div子孙节点也被删除了。有什么办法能在保留整棵DOM树层级...
  • 每当我们需要修改时候,只需维护那一个功能性组件即可,不需要这个功能了,只需要从页面中删除这个组件引用即可。 那么废话不多说了,我们来看看如何全局注册并一键引入(类似于element ui全部引入)。 (注:...
  • 我们知道我们可以,那么我们究竟如何互动与页面的节点? 好吧,我们听他们的! 目标 演示使用addEventListener()侦听DOM节点上的事件 演示DOM节点上的触发事件侦听器 演示防止DOM节点的默认行为 解释冒泡事件和...
  • Mint UI框架,想给其中一个页面的messagebox加背景灯样式,但是一旦设置公共类“.mint-msgbox”,其它页面的messagebox也会出现同样样式,所以给它动态加一个类,用于选择元素,设置样式。 背景知识: 下面...
  • 第一种方法: 第一步,在Web.config文件Pages配置节点中设置enableViewState="false",或者在每个Aspx页头部设置。完成第一步后,无论如何.Net也会在页面上输出<input type="hidden" name="__VIEWSTATE" id...
  • 在javascript单独添加一个节点只是将添加内容储存在内存如何添加后显示到页面上呢?-------这个时候就需要appenChild() 语法:父节点.appenChild(子节点); 例如: 我们可以用input表单创建一个文本框和一...
  • 所以我们最后得到的用户选区所包含的节点里,也只希望有首尾文本节点的这“一部分”。对此,我们可以使用 <a href="https://developer.mozilla.org/en-US/docs/Web/API/Text/splitText"><code>.split...
  • HTML DOM 是关于如何获取、更改、添加或删除 HTML 元素标准 在 DOM ,所有 HTML 元素都被定义为对象。----其中就是方法(可进行操作)和属性(可被改变值) HTML DOM模型被结构化为对象树: 2.(其中一种...
  • es6实际开发中的问题

    2020-12-30 09:41:15
    页面DOM里每个节点上都有一个classList对象,程序员可以使用里面方法新增、删除、修改节点CSS类。使用classList,程序员还可以用它来判断某个节点是否被赋予了某个CSS类。 const hasClass = (el, className)...
  • 摘要: 在本文,我们将借助 D3.js 灵活性这一优势,去新增一些 D3.js 本身并不支持但我们想要一些常见功能:Nebula Graph 图探索的删除节点和缩放功能前言在上篇文章(D3.js 力导向图显示优化),我们说...
  • DOM有很多可以获取到页面元素方法,这些方法都可以获取到页面元素,从而对元素进行操作,也可以添加、删除、修改元素。 页面每一个元素,其实就是一个节点,而DOM上每一个节点都是唯一。 旧获取方法 1、...
  • 相关阅读: X-admin2.2打开页面(添加弹窗),执行成功后如何关闭弹出窗口和刷新table表格内容?...ZTree工具类汇总,包括:新增、编辑和删除节点,并提交后台 LayUi动态表格Table每个td内容可以设置为可
  • Eclipse中的树形图(一)

    2021-02-26 14:25:22
    我们有时候会用到树形图来查询出我们需要数据,树形图可以折叠起来,可以让我们的页面布局变得更美观。该如何把树形图做出来呢,接下来就看看一个非常简单树形图。下图为html代码。 我们需要为树形图进行一些...
  • 信息来源:Bitcoinsv.io “创世纪升级”删除了...预计矿工不久后将其挖出区块头公布他们各自设置。与此同时,我们也将在此页面定期手动更新各矿工已知设置。 我们强烈建议您关注运行 BSV 节点的推荐系统要
  • 大大减少代码中的视图更新逻辑)。但是这不是唯一的办法,还有一个非常直观的方法,可以大大降低视图更新的操作:一旦状态发生了变化,就用模版引擎重新渲染整个视图</strong>,...

空空如也

空空如也

1 2 3 4 5 6
收藏数 119
精华内容 47
关键字:

如何删除页面中的节点