Javascript Opera中html()处理的JQuery问题
我有以下JS代码(在问题仍然存在的情况下剥离到最小大小)Javascript Opera中html()处理的JQuery问题,javascript,jquery,opera,Javascript,Jquery,Opera,我有以下JS代码(在问题仍然存在的情况下剥离到最小大小) 这是测试 var string1=$('#debug').html(); var string2=string1.replace(//g,); string2=string2.替换(//g,); $('#debug').html(string2); 在Firefox中,一切正常,标签被替换为 但在歌剧中,它们的位置是固定不变的。此外,任何其他HTML标记都不会被regexp捕获 有没有办法纠正这种行为?我不仅需要替换标记,还需要解析它
这是测试
var string1=$('#debug').html();
var string2=string1.replace(//g,);
string2=string2.替换(//g,);
$('#debug').html(string2);
在Firefox中,一切正常,标签被替换为
但在歌剧中,它们的位置是固定不变的。此外,任何其他HTML标记都不会被regexp捕获
有没有办法纠正这种行为?我不仅需要替换标记,还需要解析它们的内容(例如href属性)。Opera以大写形式返回标记,例如
。您需要不敏感地将正则表达式更改为work case:
var string2 = string1.replace(/<em>/gi, '<strong>');
string2 = string2.replace(/<\/em>/gi, '</strong>');
var string2=string1.replace(//gi,);
string2=string2.替换(//gi,);
Opera以大写形式返回标记,例如
。您需要不敏感地将正则表达式更改为work case:
var string2 = string1.replace(/<em>/gi, '<strong>');
string2 = string2.replace(/<\/em>/gi, '</strong>');
var string2=string1.replace(//gi,);
string2=string2.替换(//gi,);
您的正则表达式在Opera中不匹配,因为它已将所有HTML标记规范化为大写,并使用//gi重试
但是,如果您要做更多的更改(“解析它们的内容”),我真的建议您进行适当的DOM操作,而不要使用正则表达式。您的正则表达式在Opera中不匹配,因为它已将所有HTML标记规范化为大写,并尝试使用//gi
但是,如果您要进行更多更改(“解析其内容”),我真的建议您进行适当的DOM操作,不要使用正则表达式。如果可以使用DOM方法,请不要使用字符串方法:
$("#debug em").each(function() {
var newElem = document.createElement("strong");
for (int i=0; i<this.childNodes.length; ++i) {
newElem.appendChild(this.childNodes[i]);
}
this.parentNode.replaceNode(newElem, this);
});
$(“#调试em”)。每个(函数(){
var newElem=document.createElement(“强”);
对于(int i=0;i当可以使用DOM方法时,不要使用字符串方法:
$("#debug em").each(function() {
var newElem = document.createElement("strong");
for (int i=0; i<this.childNodes.length; ++i) {
newElem.appendChild(this.childNodes[i]);
}
this.parentNode.replaceNode(newElem, this);
});
$(“#调试em”)。每个(函数(){
var newElem=document.createElement(“强”);
对于(int i=0;i@technix.in.uaOpera正在创建源HTML的规范化表示,并选择将标记名改为大写。Firefox则相反,将所有标记名改为小写。除Firefox外,Safari和Chrome也将标准化为小写。Opera遵循IE的TagSoup[tm]。innerHTML返回值为“兼容”但近年来Opera一直在努力避免复制IE的bug。一般来说,考虑到XHTML标记和属性无论如何都应该是小写的,所以这更有意义(IMHO)。在这种情况下,IE/Opera的规范化是whack.tags upper,attributes lower(或camelCase),并且只在设置了值的属性上正确引用…但我离题了…我不太理解标记和属性名称“应该是”小写的说法。IE所做的逻辑非常简单:IE发明了innerHTML,因此它们根据定义是正确的,希望支持它的浏览器应该知道IE所做的事情。(当然,它现在在HTML5中被标准化了,所以当HTML5发布时,这不再适用。)@technix.in.ua Opera正在创建源HTML的规范化表示,并选择将标记名改为大写。Firefox则相反,将所有标记名改为小写。除Firefox外,Safari和Chrome也将标准化为小写。Opera遵循IE的TagSoup[tm]。innerHTML返回值为“兼容”但近年来Opera一直在努力避免复制IE的bug。一般来说,考虑到XHTML标记和属性无论如何都应该是小写的,所以这更有意义(IMHO)。在这种情况下,IE/Opera的规范化是whack.tags upper,attributes lower(或camelCase),并且只在设置了值的属性上正确引用…但我离题了…我不太理解标记和属性名称“应该是”小写的说法。IE所做的逻辑非常简单:IE发明了innerHTML,因此它们根据定义是正确的,希望支持它的浏览器应该知道IE所做的事情。(当然,它现在在HTML5中被标准化了,所以当HTML5发布时,这不再适用。)