Eliminando atributos xmlns añadidos automáticamente
Estoy tratando de ejecutar una función de búsqueda y resaltado simple enJavascript
que busca una pieza de texto. losXHTML
La etiqueta con la que aparece ese fragmento de texto también se presenta como un argumento para obtener ayuda adicional para ubicar ese texto.
El XHTML que estoy probando esta función en:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta content="application/xml+xhtml;charset=UTF-8" />
<script src="searcher.js" type="text/javascript"></script>
<script src="jquery-2.0.2.min.js"> </script>
<title>Building your resume</title>
</head>
<body id="highlightbegin">
<h1>Building your resume</h1>
<div> <input name="input" type="button" value="Highlight3" onclick="javascript:searcher('<h1>','Building your resume', '<h1>Building your resume', 'resume');" /> </div>
</body>
</html>
El buscador de funciones en searcher.js:
function searcher(tag, text, tagText, word) {
//simple search.
console.info(word + " to be searched for in " + text + " with tag text = " + tagText);
//get old html.
var oldHTML = document.getElementById("highlightbegin").innerHTML;
//get regexp.
var regexp = new RegExp(tagText, 'g');
var match = oldHTML.match(regexp);
console.info(text + " found " + match.length + " times.");
}
Sin embargo, ejecutando elRegExp
partido devuelvenull
. Más investigación revela que la etiqueta<h1>Building your resume</h1>
se convierte en<h1 xmlns="http://www.w3.org/1999/xhtml">Building your resume</h1>
lo que causa lamatch
función para volvernull
. Mis preguntas:
xmlns
atributo añadido automáticamente?¿Hay alguna manera de evitar que se agregue el atributo?¿A qué etiquetas se agregará ese atributo? ¿Es seguro asumir que se agregará a cada etiqueta?¿Es este un problema específico del navegador o puede esperarse este comportamiento en todos los navegadores?EDITAR:
Una observación:
1. Si agrego elxmlns
atribuir a labody
etiqueta y accede a todo el contenido conouterHTML
(var oldHTML = document.getElementById("highlightbegin").outerHTML;
), sus elementos hijos no tienen laxmlns
atributo.
Mis preguntas:
1. ¿Se puede editar el elemento outerHTML (conJavascript
) y reemplazado?
2. ¿Es consistente la observación anterior (vista cada vez)?outerHTML
es invocado) o es dependiente de la implementación?
3. esJavascript
que agrega elxmlns
atributo automáticamente o el navegador?