当我在ace编辑器中编辑HTML时,是否有方法以简单的方式查询HTML?通过选择器?有没有办法在Ace代码编辑器中查询HTML?
[fake-html-dom].querySelectorAll("A").length
我读到,当你使用jQuery $('<html code>')
的HTML被插入到真正的DOM,我想避免实际运行HTML时,它在窗口/ iframe中。
也可以直接在编辑器中修改找到的元素(如自定义突出显示)。
当我在ace编辑器中编辑HTML时,是否有方法以简单的方式查询HTML?通过选择器?有没有办法在Ace代码编辑器中查询HTML?
[fake-html-dom].querySelectorAll("A").length
我读到,当你使用jQuery $('<html code>')
的HTML被插入到真正的DOM,我想避免实际运行HTML时,它在窗口/ iframe中。
也可以直接在编辑器中修改找到的元素(如自定义突出显示)。
你可以这样建立一个假的HTML文档对象:
var docImpl = document.implementation;
var fakeDoc = docImpl.createHTMLDocument("myhtml"/*it is just a title*/);
你使用一个王牌的HTML编辑器首先,你应该阅读从编辑器的HTML字符串,然后提取的主体内容,并最终将其插入到假身体。这些都是你要采取的步骤:
//Ace usually uses ace_text-layer as the classname for the html string part
var htmlContent = document.querySelector(".ace_text-layer").innerText;
//you can also change this part if it didn't work, depends on your Ace version
现在你应该提取正文内容,如果它在它<html>
或<body>
标签:
var pattern = /<body[^>]*>((.|[\n\r])*)<\/body>/im;
var array_matches = pattern.exec(htmlContent);
var extractedContent = array_matches[1];
然后将其插入到假体
fakeDoc.body.innerHTML = extractedContent;
最后做任何你可能需要的查询:
fakeDoc.querySelectorAll("A").length
哇,努力工作的人,很好的回答。我学到了一些新的技巧:) – Madd0g
欢迎您,我真的很喜欢创新的问题,通过实时查询html的想法是其中之一,不管您是否知道所有的东西。 –
你能解释一下你究竟想要做什么,或者说所有关于'以简单的方式查询HTML'!? –
我认为我的回答可以满足您的需求。一探究竟。 –