首页 > 其他分享 >eruda 最新版本 2.10.0 绑定 dom 在指定位置显示

eruda 最新版本 2.10.0 绑定 dom 在指定位置显示

时间:2023-01-09 11:44:17浏览次数:63  
标签:el eruda container dom ._ childNodes 2.10

前言

继上篇的【解决使用 Eruda 绑定 dom 未在指定位置显示问题】,最近重新拉取项目进行 npm install 的时候,运行后发现,eruda的布局又出现了问题,看下运行的效果:

正常的效果显示:
image

现在的显示效果:
image

会发现 eruda 没有显示,看了下控制台报错了

原因

之前写的项目使用的 eruda 版本为 2.4.1,能正常显示的 eruda 是基于此版本进行修改的
原先 eruda 宽高占满容器的代码是这样子的:

// 设置占满容器
let el = eruda._$el[0].childNodes[1];
if (el) {
  // 日志容器继承父元素高度
  el.style.height = "inherit";
}

最新版 2.10.0 控制台报错也是因为这的原因,其中 el 就是为了获取到 className 为 eruda-dev-tools 进行修改其高度继承父级进行暂满容器,但是现在获取到的 el 是个 text
image

现在重新安装依赖后看了下版本为 2.10.0 最新版,对比了下两个版本的 dom 结构,发现最新版 2.10.0 的 eruda dom 结构和之前的 2.4.1 的结构多了个 div 蒙版。

原先 2.4.1 的 eruda dom结构
image
eruda._$el[0].childNodes:
image

这里的 eruda._$el[0] 为:
image

最新版 2.10.0 的 eruda dom结构
image
eruda._$el[0].childNodes:
image
最新版的 2.10.0 新增了 这个 eruda-container chobitsu-hide 的div

这里的 eruda._$el[0] 为:
image

解决方法

  1. 删除 新增的蒙版 div
  2. 在新增的蒙版 div 加上定位样式:position:absolute (这里只讲此解决方法)
    根据 2.10.0 版本的eruda._$el[0].childNodes:
    image

(1)拿取到 childNodes 进行遍历获取到类名为 eruda-dev-tools 的 dom修改其高度为继承父级高度
(2)获取类名为 eruda-container chobitsu-hide 蒙版div,为其添加样式 position:absolute

mounted() {
    // 初始化
    eruda.init({
      container: this.$refs.erudaBox,
      tool: ["console", "elements"],
      useShadowDom: false, // 把这个设置为 false, .eruda-container 样式 position 重写
    });
	
    // 拿取到 childNodes 进行遍历获取到类名为 eruda-dev-tools 的 dom 修改其高度为继承父级高度
    let el = null
    let childNodes= eruda._$el[0].childNodes;
    childNodes.forEach(v =>{
      if(v.className === 'eruda-dev-tools'){
        el = v
      }
    })
    if (el) {
      // 日志容器继承父元素高度
      el.style.height = "inherit";
    }
    // 获取类名为 eruda-container __chobitsu-hide__ 蒙版div,为其添加样式 position:absolute
    let hideMask = eruda._$el[0]
    hideMask.style.position = 'absolute'

    // 默认图标不显示
    let entrytn = eruda._entryBtn._$el[0];
    entrytn.style.display = "none";
	
    // 显示
    eruda.show();
  },

最终效果

image

完整代码

<template>
  <div class="main">
    <div>
      <h1 style="text-align: center">
        在包裹的边框里显示 Eruda,边框:1400*500
      </h1>
      <div class="content" style="position: relative">
        <div ref="erudaBox"></div>
      </div>
    </div>
  </div>
</template>
<script>
import eruda from "eruda";
export default {
  mounted() {
    // 初始化
    eruda.init({
      container: this.$refs.erudaBox,
      tool: ["console", "elements"],
      useShadowDom: false, // 把这个设置为 false, .eruda-container 样式 position 重写
    });

    // 拿取到 childNodes 进行遍历获取到类名为 eruda-dev-tools 的 dom 修改其高度为继承父级高度
    let el = null
    let childNodes= eruda._$el[0].childNodes;
    childNodes.forEach(v =>{
      if(v.className === 'eruda-dev-tools'){
        el = v
      }
    })
    if (el) {
      // 日志容器继承父元素高度
      el.style.height = "inherit";
    }
    // 获取类名为 eruda-container __chobitsu-hide__ 蒙版div,为其添加样式 position:absolute
    let hideMask = eruda._$el[0]
    hideMask.style.position = 'absolute'

    // 默认图标不显示
    let entrytn = eruda._entryBtn._$el[0];
    entrytn.style.display = "none";

    // 显示
    eruda.show();
  },
};
</script>

<style scoped>
.eruda-container {
  position: absolute;
}
.main {
  width: 100%;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

.content {
  width: 1400px;
  height: 400px;
  border: 5px solid red;
}
</style>

标签:el,eruda,container,dom,._,childNodes,2.10
From: https://www.cnblogs.com/clownblogs/p/17036565.html

相关文章

  • React面试:谈谈虚拟DOM,Diff算法与Key机制
    1.虚拟dom原生的JSDOM操作非常消耗性能,而React把真实原生JSDOM转换成了JavaScript对象。这就是虚拟Dom(VirtualDom)每次数据更新后,重新计算虚拟Dom,并和上一次生成的虚拟......
  • 6.1认识BOM和DOM
    认识BOM和DOM什么是BOMBOM是BrowserObjectModel的简写,即浏览器对象模型。BOM有一系列对象组成,是访问、控制、修改浏览器的属性的方法BOM没有统一的标准(每种客户端都......
  • 6.1认识BOM和DOM
    认识BOM和DOM什么是BOMBOM是BrowserObjectModel的简写,即浏览器对象模型。BOM有一系列对象组成,是访问、控制、修改浏览器的属性的方法BOM没有统一的标准(每种客户端都......
  • Python学习——random相关代码
    importrandom#求随机能被3和5同时整除的数num=random.randint(1,1000)ifnum%3==0andnum%5==0:print(f'数字{num}可以被3和5整除')elifnum%3==0:......
  • 七DOM编程学习-概念引入
    ​  什么是DOM编程简单来说:DOM编程就是使用document对象的API完成对网页HTML文档进行动态修改,以实现网页数据和样式动态变化效果的编程.什么是documentdocument对......
  • 七DOM编程学习-概念引入
    ​  什么是DOM编程简单来说:DOM编程就是使用document对象的API完成对网页HTML文档进行动态修改,以实现网页数据和样式动态变化效果的编程.什么是documentdocument对......
  • JavaScript-DOM-节点操作
    JavaScript-DOM-节点操作目录JavaScript-DOM-节点操作5.节点操作5.1为什么学节点操作5.2节点概述5.3节点层级6.工作中常见操作1.排他思想(算法)2.百度换肤效果3.表格隔......
  • JavaScript-DOM
    DOM文档对象模型(DocumentObjectModel)提供系列的属性与方法,让我们在JS中操作页面元素。DOM由W3C定义,“一个与系统平台和变成语言无关的接口,程序和脚本可以通过这个接口动......
  • javaScript-DOM-获取元素,事件基础,操作元素
    javaScript-DOM目录javaScript-DOM1.DOM简介1.1什么是DOM1.2DOM树2.获取元素2.1如何获取页面元素2.2根据ID获取2.3根据标签名获取2.4通过HTML5新增的方法......
  • Random Art
    目录RandomArt0.Acknowledgement1.MonteCarloMethod1.1.InterestingFacts1.2.Definition2.LasVegasAlgorithm2.1.Quicksort2.1.1.Algorithm2.1.2.ExpectedT......