在javascript中替换html注释的快速方法
假设您有一个来自服务器的已注释html结构(它被注释是为了提高渲染速度,如FB)。之后,我们应该删除我们的内容,并允许浏览器呈现html。最快的方法是什么?可能使用 …使用jquery注释插件: …使用jquery注释插件:在javascript中替换html注释的快速方法,javascript,jquery,html,Javascript,Jquery,Html,假设您有一个来自服务器的已注释html结构(它被注释是为了提高渲染速度,如FB)。之后,我们应该删除我们的内容,并允许浏览器呈现html。最快的方法是什么?可能使用 …使用jquery注释插件: …使用jquery注释插件: 我们将获得已注释的DOM,然后执行replace() var dom=$.trim($('#domcontainer').html()).replace(''); 我们将获得已注释的DOM,然后执行replace() var dom=$.trim($('#domconta
我们将获得已注释的DOM,然后执行
replace()
var dom=$.trim($('#domcontainer').html()).replace('');
我们将获得已注释的DOM,然后执行replace()
var dom=$.trim($('#domcontainer').html()).replace('');
您可以使用“content()”方法来测试所有节点,包括注释:light和plugin free
然后应该使用“filter()”方法筛选集合
您可以使用“content()”方法测试所有节点,包括注释:light和plugin free
然后应该使用“filter()”方法筛选集合
函数_removeComments(节点){
如果(!node | |!node.parentNode)返回;
if(node.nodeType==8){
node.parentNode.removeChild(节点);
返回;
}
for(var c=node.firstChild;c;){
var n=c.nextSibling;
_清除元素(c);
c=n;
}
}
函数移除元素(元素){
元素。每个(函数(){
_清除(本);
});
}
函数_removeComments(节点){
如果(!node | |!node.parentNode)返回;
if(node.nodeType==8){
node.parentNode.removeChild(节点);
返回;
}
for(var c=node.firstChild;c;){
var n=c.nextSibling;
_清除元素(c);
c=n;
}
}
函数移除元素(元素){
元素。每个(函数(){
_清除(本);
});
}
试试这个方法。向元素节点提供已注释的HTML,这将删除注释块并显示HTML
function uncommentNode(node) {
var nodestr = node.innerHTML;
var noderevealHTML = nodestr.replace(/<!--/ig, '').replace(/-->/ig, ''); // Update expressions here.
node.innerHTML = noderevealHTML;
}
函数取消注释节点(node){
var nodestr=node.innerHTML;
var noderevealHTML=nodestr.replace(//ig',);//在此处更新表达式。
node.innerHTML=noderevealHTML;
}
如果您的注释HTML有三个或更多的破折号(),请尝试此方法。为元素节点提供注释HTML,这将删除注释块并显示HTML
function uncommentNode(node) {
var nodestr = node.innerHTML;
var noderevealHTML = nodestr.replace(/<!--/ig, '').replace(/-->/ig, ''); // Update expressions here.
node.innerHTML = noderevealHTML;
}
函数取消注释节点(node){
var nodestr=node.innerHTML;
var noderevealHTML=nodestr.replace(//ig',);//在此处更新表达式。
node.innerHTML=noderevealHTML;
}
如果您的注释HTML有三个或更多破折号(这可能会有帮助:谢谢,我以前见过它,甚至实现过类似的东西,但我一直在研究最快的方法。使用纯JS将比使用jQuery更快。是的,我只是在研究方法。我们可以只删除注释节点并用它的内容替换它吗。对了,对不起,我误解了-我以为你在尝试删除Commonts(及其内容)从DOM。如果你只是删除“”标记,那么你最好的选择可能是取消注释插件,正如bart sThis所发布的那样。这可能会有所帮助:谢谢,我以前见过它,甚至实现过类似的东西,但我一直在研究最快的方法。使用纯JS将比使用jQuery更快。是的,我只是在研究方法。我们可以只删除comme吗nt节点并将其替换为其内容。是的,对不起,我误解了-我以为您正在尝试从DOM中删除注释(及其内容)。如果您只是删除“”标记,那么最好的选择可能是取消注释插件,正如bart sI发布的那样,我正在使用
。replace(//mig,$1');
我正在使用。replace(//mig,$1'));
似乎没有优化:)但是节点类型===8的idea看起来没有优化:)但是节点类型===8的idea没有优化:)但是节点类型===8的idea没有优化类型错误:$(…)。注释不是函数没有优化类型错误:$(…)。注释不是函数
$container
.contents()
.filter(function(){ return this.nodeType == 8; })
.remove(); // replaceWith() etc.
function _removeComments(node) {
if (!node || !node.parentNode) return;
if (node.nodeType == 8) {
node.parentNode.removeChild(node);
return;
}
for (var c = node.firstChild; c; ) {
var n = c.nextSibling;
_removeComments(c);
c = n;
}
}
function removeComments(element) {
element.each(function() {
_removeComments(this);
});
}
function uncommentNode(node) {
var nodestr = node.innerHTML;
var noderevealHTML = nodestr.replace(/<!--/ig, '').replace(/-->/ig, ''); // Update expressions here.
node.innerHTML = noderevealHTML;
}