ParentNode返回假值

时间:2019-06-20 23:30:29

标签: javascript html

我在使用ParentNode时遇到了一些麻烦 请参阅“我正在研究所见即所得”,我想告诉我所选文本的父代是什么。 直到我有两个具有不同样式的文本,它都可以正常工作 例如:

<b>Bold<b> NotBold

当我单击粗体时,它将返回BODY标记,当我再次单击它时,它将重新运行B标记。 与NotBold相同,当我单击NotBold之后单击Bold时,它返回B标签,而当我再次单击时,它返回我BODY 问题出在哪里?

document.addEventListener("DOMContentLoaded",iFrameStart,false); //make iFrame Editable
function iFrameStart() {
    iframe.document.designMode="On";
}
let frame = document.getElementById('iframe');
frame.contentWindow.onselectstart=function()
{
    let frame = document.getElementById("iframe");
    let select=frame.contentWindow.getSelection(); //get the selected text
    let a = select.focusNode.parentNode; //get the parent of selected text
    //if it removed it returns the value in " "
    let array= ['ok']; //create an array
    while (a) {
        array.push(a); //add to the array
        a=a.parentNode;
    }
    console.log(array); //display the parents
};

1 个答案:

答案 0 :(得分:1)

请尝试以下操作。它使父节点正常。您没有关闭示例中的 标记

<iframe id='iframe'></iframe>


document.addEventListener("DOMContentLoaded", iFrameStart, false); //make iFrame Editable
function iFrameStart() {
  window.iframe.document.designMode = "On";
}
let frame = document.getElementById("iframe");
frame.contentDocument.body.innerHTML = "<b>Bold </b> <c>not bold</c>";
//window.iframe.document.getElementByTag("body")[0].innerHTML = "SAQIB";

frame.contentWindow.onclick = function() {
  let frame = document.getElementById("iframe");
  let select = frame.contentWindow.getSelection(); //get the selected text
  let a = select.focusNode.parentNode; //get the parent of selected text
  console.log(select.focusNode.parentNode);
  //if it removed it returns the value in " "
  let array = ["ok"]; //create an array
  while (a) {
    array.push(a); //add to the array
    a = a.parentNode;
  }
  console.log(array); //display the parents
};