2014-01-12 32 views
0

当我在ace编辑器中编辑HTML时,是否有方法以简单的方式查询HTML?通过选择器?有没有办法在Ace代码编辑器中查询HTML?

[fake-html-dom].querySelectorAll("A").length 

我读到,当你使用jQuery $('<html code>')的HTML被插入到真正的DOM,我想避免实际运行HTML时,它在窗口/ iframe中。

也可以直接在编辑器中修改找到的元素(如自定义突出显示)。

+0

你能解释一下你究竟想要做什么,或者说所有关于'以简单的方式查询HTML'!? –

+0

我认为我的回答可以满足您的需求。一探究竟。 –

回答

3

你可以这样建立一个假的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 
+0

哇,努力工作的人,很好的回答。我学到了一些新的技巧:) – Madd0g

+0

欢迎您,我真的很喜欢创新的问题,通过实时查询html的想法是其中之一,不管您是否知道所有的东西。 –

相关问题