Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Opera中html()处理的JQuery问题_Javascript_Jquery_Opera - Fatal编程技术网

Javascript Opera中html()处理的JQuery问题

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捕获 有没有办法纠正这种行为?我不仅需要替换标记,还需要解析它

我有以下JS代码(在问题仍然存在的情况下剥离到最小大小)


这是测试
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发布时,这不再适用。)