electron 函数是否未接收到send()?

j13ufse2  于 2022-12-08  发布在  Electron
关注(0)|答案(1)|浏览(162)

我要显示的数据是疾病矩阵的形式,当您在专科页面上单击矩阵名称时,将打开显示该专科疾病的页面。index.js

let maladie=document.querySelectorAll('ul li');
 maladie.forEach(function(el){
  el.addEventListener('click',function(e){
   let des= PathData.filter(function(ele){
      if(ele.name===el.innerText){
        return ele;
      }
    });
  let dataMaladie=des[0].Diseases;
  
  ipcRenderer.send('openmaladie-page',dataMaladie);
   e.preventDefault();
     });
 });

dataMaldie是一个阵列,其上按下了该专业的所有疾病,并且显示正确
主. js.文件

ipcMain.on('openmaladie-page',function(e,data){

console.log(data);
   win.webContents.send("dataMaladie",data);
   
   
   creatWindow('maladie.html');
});

maladie.js

const {ipcRenderer} =require('electron');

ipcRenderer.on('dataMaladie',function(e,data){
    
    console.log(data);
    let con=document.querySelector('#Diseases');
    for(let i=0; i<data.length;i++){
        let li=` <li class="col-3 patho ">
        <a href="#">
                <span class="ml-4 ">${data[i]}<span>
        </a>    
     </li>`;k`enter code here`
     con.append(li);
    }
   
});

在这里,我收到矩阵中的疾病,并将它们注入到页面中,然后显示页面,除了在控制台中不打印任何内容外,疾病的html页面没有任何变化!!

o0lyfsai

o0lyfsai1#

当使用字符串参数调用Element.append()时,只能将纯文本(而不是HTML元素)插入DOM。

// In your loop
let li = document.createElement ("li");
li.classList.add ("col-3", "patho");

let a = document.createElement ("a");
a.href = "#";

let span = document.createElement ("span");
span.classList.add ("ml-4");
span.innerText = data [i];

a.append (span);
li.append (a);
con.append (li);

您可以使用Element.classList.add()将CSS类别分隔成不同的字串,以指定任何想要的CSS类别。
最后一点:这段代码使用Element.innerText作为span元素中的文本,这意味着data [i]的任何HTML内容都将被转义,这是正确的做法。通过简单地使用字符串插值(如原始示例)或使用Element.innerHTML,您将自己(您的应用)开放给用户定义的DOM元素,这是不鼓励的,因为这甚至可能包含恶意JavaScript。

相关问题