No funciona en mosilla si en explorador

Este es mi código. Gracias
<html>
<head>
<title>Activar botón de Busqueda</title>
<style type="text/css">
<!--
#apDiv1 {
 position:absolute;
 width:200px;
 height:115px;
 z-index:1;
 left: 230px;
 top: 250px;
}
#apDiv2 {
 position:absolute;
 width:200px;
 height:115px;
 z-index:1;
 left: 224px;
 top: 135px;
}
-->
</style>
</head>
<body>
<script language="JavaScript">
//Por El Chacal ([email protected])
var NS4 = (document.layers);
var IE4 = (document.all);
var win = window; // Con frames usar top.nombre.window;
var n = 0;
function BuscarPalabras(str)
{
var txt, i, found;
if (str == "")
return false;
if (NS4) {
if (!win.find(str))
while(win.find(str, false, true))
n++;
else
n++;
// No se encuentra en ninguna parte y envia un mensaje.
if (n == 0)
alert("No se encuentra.");
}
if (IE4) {
txt = win.document.body.createTextRange();
// Encuentra la coincidencia desde el inicio de pagina.
for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
txt.moveStart("character", 1);
txt.moveEnd("textedit");
}
// Si lo encuentra, marca el resultado y mueve la barra de desplazamiento
// para mostrarlo.
if (found) {
txt.moveStart("character", -1);
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
}
// De otra manera regresa al inicio de la página para buscar otra coinsidencia
else {
if (n > 0) {
n = 0;
BuscarPalabras(str);
}
// No se encuentra en ninguna parte envia un mensaje.
else
alert("No se encontró.");
}
}
return false;
}
</script>
<font face=arial size=2>
<p>Escribe la palabra que desees buscar dentro de esta página en el cuadro de texto y presiona el botón BUSCAR.</p>
</font>
<form name="search" onSubmit="return BuscarPalabras(this.string.value);">
<select name="string" id="string">
  <option value="akitas">akitas</option>
  <option value="boxer">boxer</option>
  <option value="pastores">pastores</option>
  <option value="doberman">doberman</option>
  </select>
</font>
<font size=2>
<input type="submit" value="BUSCAR">
</font>
</form>
<div id="apDiv2">
<p>A B C D E F G pastores<br>
     <br>
H I J K L M N boxer<br>
<br>
O P Q R S T U<br>
<br>
V W X Y Z
 akitas </p>
<p>doberman</p>
 </div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</html>

1 respuesta

Respuesta
1
No se muy bien para que quieres eso, pero te comento que tienes el código un poco anticuado, efectivamente en firefox no funciona, el problema que tienes es éste.
var NS4 = (document.layers);
var IE4 = (document.all);

Reemplaza esas dos líneas y pon ésto:
var NS4;
var IE4;
if(document.all){
 IE4=true;
 NS4=false;
}else{
 NS4=true;
 IE4=false;
}

No puedes comprobar document. Layers en firefox por lo tanto descarta que sea internet explorer y listo. Eso hace el código que te he puesto.
Te aconsejo que la forma ésta no es la mejor para detectar los navegadores, pero
Te funcionará en Explorer y en Firefox.
Gracias, me gustaría saber una forma más moderna de tener ese buscador de palabras interno, no he podido encontrá otro, si me pude ayudar gracias por responderme.
La forma anticuada es el document. All y el document. Layers.
Ahora existe otro método llamado DOM, que lo soportan todos los navegadores y usa objetos y manipula de una forma mejor.
Como son: getElementById y getElementByTagName, como a lo mejor has oído hablar
Todo el otro planteamiento está bien, la forma de detectar el navegador podrías usar Navigator. AppName
Puedes mirar algún tutoría o ayuda sobre DOM, te interesará
Si no fuera tanta la molestia, me podría indicar o ponerle eso al código para que me funcione, mientras yo estudio y en tiendo, me puede llevar rato o no entender, mientras que si lo veo en mi código puede ser mejor, yo estudiare lo que me dice. Gracias por todo.
En la zona:
if (IE4) {
txt = win.document.body.createTextRange();
// Encuentra la coincidencia desde el inicio de pagina.
for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
txt.moveStart("character", 1);
txt.moveEnd("textedit");
}
En la línea:
txt = win.document.body.createTextRange();
podría reemplazarla por:
txt=document.getElementsByTagName("body").createTextRange(); 
Hace lo mismo, pero actualiza su código para que no se quede obsoleto.
El document. All y el document. Layers como no lo está utilizando si no que lo ha usado para saber si un navegador u otro no se puede aplicar a mucho mas.
Así me quedo el código pero no me funciona en ninguno de los dos navegadores, le puse lo que me dijo y le quite las dos primeros lineas de document y layer, que hice mal.
Para que vea donde tengo funcionando el código es www.productoscostarica.com/venta_perros_costarica.html
<html>
<head>
<title>Activar botón de Busqueda</title>
<style type="text/css">
<!--
#apDiv2 {
    position:absolute;
    width:200px;
    height:115px;
    z-index:1;
    left: 224px;
    top: 135px;
}
#apDiv1 {
    position:absolute;
    width:138px;
    height:22px;
    z-index:0;
    left: 12px;
    top: 69px;
    background-color: #FFE4CA;
}
-->
</style>
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
</head>
<body>
<script language="JavaScript">
var win = window; // Con frames usar top.nombre.window;
var n = 0;
function BuscarPalabras(str)
{
var txt, i, found;
if (str == "")
return false;
if (NS4) {
if (!win.find(str))
while(win.find(str, false, true))
n++;
else
n++;
// No se encuentra en ninguna parte y envia un mensaje.
if (n == 0)
alert("Esta raza todavia no tiene ofertas.");
}
if (IE4) {
txt=document.getElementsByTagName("body").createTextRange();  
// Encuentra la coincidencia desde el inicio de pagina.
for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
txt.moveStart("character", 1);
txt.moveEnd("textedit");
}
// Si lo encuentra, marca el resultado y mueve la barra de desplazamiento
// para mostrarlo.
if (found) {
txt.moveStart("character", -1);
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
}
// De otra manera regresa al inicio de la página para buscar otra coinsidencia
else {
if (n > 0) {
n = 0;
BuscarPalabras(str);
}
// No se encuentra en ninguna parte envia un mensaje.
else
alert("Esta raza todavia no tiene ofertas.");
}
}
return false;
}
</script>
<font face=arial size=2>
<p>Escribe la palabra que desees buscar dentro de esta página en el cuadro de texto y presiona el botón BUSCAR.</p>
</font>
<form name="search" onSubmit="return BuscarPalabras(this.string.value);">
<select name="string" id="string">
  <option value="akitas">Akitas</option>
  <option value="Beagle">Beagle</option>
  <option value="Belga Malinois">Belga Malinois</option>
  <option value="Boston Terrier">Boston Terrier</option>
  <option value="boxer">Boxer</option>
  <option value="Bull Dog Ingles">Bull Dog Ingles</option>
  <option value="Chihuagua">Chihuagua</option>
  <option value="doberman">Doberman</option>
  <option value="Dogo de Burdeos">Dogo de Burdeos</option>
  <option value="Fox Terrier">Fox Terrier</option>
  <option value="French">French</option>
  <option value="Golden Retriever">Golden Retriever</option>
  <option value="Labrado Rtriever">Labrado Rtriever</option>
  <option value="Malinois">Malinois</option>
  <option value="pastores">Pastores</option>
  <option value="Pug">Pug</option>
  <option value="Salchicahas">Salchicahas</option>
  <option value="Schnauzer">Schnauzer</option>
  <option value="Yorki">Yorki</option>
</select>
</font>
<font size=2>
<input type="submit" value="BUSCAR">
</font>
</form>
<div id="apDiv2">
<p>A B C D E F G pastores<br>
     <br>
H I J K L M N boxer<br>
<br>
O P Q R S T U<br>
<br>
V W X Y Z
 akitas </p>
<p>doberman</p>
</div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>
<!-- Inicia el Buscador ---- Blaizer-->
<SCRIPT language=JavaScript>
var NS4 = (document.layers);   
var IE4 = (document.all);
var win = window;   
var n   = 0;
function findInPage(str) {
  var txt, i, found;
  if (str == "")
    return false;
  if (NS4) {
    if (!win.find(str))
      while(win.find(str, false, true))
        n++;
    else
      n++;
    if (n == 0)
      alert("Not found.");
  }
  if (IE4) {
    txt = win.document.body.createTextRange();
    for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
      txt.moveStart("character", 1);
      txt.moveEnd("textedit");
    }
    if (found) {
      txt.moveStart("character", -1);
      txt.findText(str);
      txt.select();
      txt.scrollIntoView();
      n++;
    }
    else {
      if (n > 0) {
        n = 0;
        findInPage(str);
      }
      else
        alert("Su busqueda no produjo, ningun resultado. Intente con otro");
   }
  }
  return false;
}
</SCRIPT>
</DIV>
<BR>
<!-- Final Buscador-->
</html>
Perdone, creo que no me expliqué bien. A parte de quitar lo que le dije, necesita poner lo que le puse a continuación por lo que quitó:
var NS4;
var IE4;
if(document.all){
 IE4=true;
 NS4=false;
}else{
 NS4=true;
 IE4=false;

}
Ésto de arriba es indispensable en su aplicación JavaScript, porque ejecuta una parte u otra diferente dependiendo del navegador. Porque se hace de forma diferente. Si quiere en vez de utilizar document. All para detectar internet explorer, podría utilizar lo siguiente, pero tiene que ponerlo en el sitio donde tenia esto como le comenté antes.
Reemplazar esto:
var NS4 = (document.layers);
var IE4 = (document.all);

Por esto:
var NS4;
var IE4;
if(navigator.userAgent.indexOf('MSIE') !=-1){
 IE4=true;
 NS4=false;
}else{
 NS4=true;
 IE4=false;
}

Lo siguiente que le puse de:
txt=document.getElementsByTagName("body").createTextRange(); 
Es para que viera que se puede modificar el contenido por uno más moderno.
Aquí están los dos cambios pero no función en ninguno
<html>
<head>
<title>Activar botón de Busqueda</title>
<style type="text/css">
<!--
#apDiv2 {
    position:absolute;
    width:200px;
    height:115px;
    z-index:1;
    left: 224px;
    top: 135px;
}
#apDiv1 {
    position:absolute;
    width:138px;
    height:22px;
    z-index:0;
    left: 12px;
    top: 69px;
    background-color: #FFE4CA;
}
-->
</style>
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
</head>
<body>
<script language="JavaScript">
var NS4;
var IE4;
if(navigator.userAgent.indexOf('MSIE') !=-1){
 IE4=true;
 NS4=false;
}else{
 NS4=true;
 IE4=false;
}
function BuscarPalabras(str)
{
var txt, i, found;
if (str == "")
return false;
if (NS4) {
if (!win.find(str))
while(win.find(str, false, true))
n++;
else
n++;
// No se encuentra en ninguna parte y envia un mensaje.
if (n == 0)
alert("Esta raza todavia no tiene ofertas.");
}
if (IE4) {
txt=document.getElementsByTagName("body").createTextRange();  
// Encuentra la coincidencia desde el inicio de pagina.
for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
txt.moveStart("character", 1);
txt.moveEnd("textedit");
}
// Si lo encuentra, marca el resultado y mueve la barra de desplazamiento
// para mostrarlo.
if (found) {
txt.moveStart("character", -1);
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
}
// De otra manera regresa al inicio de la página para buscar otra coinsidencia
else {
if (n > 0) {
n = 0;
BuscarPalabras(str);
}
// No se encuentra en ninguna parte envia un mensaje.
else
alert("Esta raza todavia no tiene ofertas.");
}
}
return false;
}
</script>
<font face=arial size=2>
<p>Escribe la palabra que desees buscar dentro de esta página en el cuadro de texto y presiona el botón BUSCAR.</p>
</font>
<form name="search" onSubmit="return BuscarPalabras(this.string.value);">
<select name="string" id="string">
  <option value="akitas">Akitas</option>
  <option value="Beagle">Beagle</option>
  <option value="Belga Malinois">Belga Malinois</option>
  <option value="Boston Terrier">Boston Terrier</option>
  <option value="boxer">Boxer</option>
  <option value="Bull Dog Ingles">Bull Dog Ingles</option>
  <option value="Chihuagua">Chihuagua</option>
  <option value="doberman">Doberman</option>
  <option value="Dogo de Burdeos">Dogo de Burdeos</option>
  <option value="Fox Terrier">Fox Terrier</option>
  <option value="French">French</option>
  <option value="Golden Retriever">Golden Retriever</option>
  <option value="Labrado Rtriever">Labrado Rtriever</option>
  <option value="Malinois">Malinois</option>
  <option value="pastores">Pastores</option>
  <option value="Pug">Pug</option>
  <option value="Salchicahas">Salchicahas</option>
  <option value="Schnauzer">Schnauzer</option>
  <option value="Yorki">Yorki</option>
</select>
</font>
<font size=2>
<input type="submit" value="BUSCAR">
</font>
</form>
<div id="apDiv2">
<p>A B C D E F G pastores<br>
     <br>
H I J K L M N boxer<br>
<br>
O P Q R S T U<br>
<br>
V W X Y Z
 akitas </p>
<p>doberman</p>
</div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>
<!-- Inicia el Buscador ---- Blaizer-->
</DIV>
<BR>
<!-- Final Buscador-->
</html>
Se estaba haciendo derrogar, pero al final ya he visto lo que pasaba, en un principio usted ha quitado más código de la cuenta y por parte mía había cometido un fallo, en el ejemplo que le puse de DOM se me olvidó poner un detalle, quedaría así:
txt=document.getElementsByTagName("body")[0].createTextRange();
Y para que no haya confusión alguna, le pego todo tal y como quedaría:
<html>
<head>
<title>Activar botón de Busqueda</title>
<style type="text/css">
<!--
#apDiv2 {
    position:absolute;
    width:200px;
    height:115px;
    z-index:1;
    left: 224px;
    top: 135px;
}
#apDiv1 {
    position:absolute;
    width:138px;
    height:22px;
    z-index:0;
    left: 12px;
    top: 69px;
    background-color: #FFE4CA;
}
-->
</style>
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
</head>
<body>
<script language="JavaScript">
var NS4;
var IE4;
if(navigator.userAgent.indexOf("MSIE") != -1){
 IE4=true;
 NS4=false;
}else{
 NS4=true;
 IE4=false;
}
var win = window; // Con frames usar top.nombre.window;
var n = 0;
function BuscarPalabras(str)
{
var txt, i, found;
if (str == "")
return false;
if (NS4) {
if (!win.find(str))
while(win.find(str, false, true))
n++;
else
n++;
// No se encuentra en ninguna parte y envia un mensaje.
if (n == 0)
alert("Esta raza todavia no tiene ofertas.");
}
if (IE4) {
txt=document.getElementsByTagName("body")[0].createTextRange();   
// Encuentra la coincidencia desde el inicio de pagina.
for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) {
txt.moveStart("character", 1);
txt.moveEnd("textedit");
}
// Si lo encuentra, marca el resultado y mueve la barra de desplazamiento
// para mostrarlo.
if (found) {
txt.moveStart("character", -1);
txt.findText(str);
txt.select();
txt.scrollIntoView();
n++;
}
// De otra manera regresa al inicio de la página para buscar otra coinsidencia
else {
if (n > 0) {
n = 0;
BuscarPalabras(str);
}
// No se encuentra en ninguna parte envia un mensaje.
else
alert("Esta raza todavia no tiene ofertas.");
}
}
return false;
}
</script>
<font face=arial size=2>
<p>Escribe la palabra que desees buscar dentro de esta página en el cuadro de texto y presiona el botón
BUSCAR.</p>
</font>
<form name="search" onSubmit="return BuscarPalabras(this.string.value);">
<select name="string" id="string">
  <option value="akitas">Akitas</option>
  <option value="Beagle">Beagle</option>
  <option value="Belga Malinois">Belga Malinois</option>
  <option value="Boston Terrier">Boston Terrier</option>
  <option value="boxer">Boxer</option>
  <option value="Bull Dog Ingles">Bull Dog Ingles</option>
  <option value="Chihuagua">Chihuagua</option>
  <option value="doberman">Doberman</option>
  <option value="Dogo de Burdeos">Dogo de Burdeos</option>
  <option value="Fox Terrier">Fox Terrier</option>
  <option value="French">French</option>
  <option value="Golden Retriever">Golden Retriever</option>
  <option value="Labrado Rtriever">Labrado Rtriever</option>
  <option value="Malinois">Malinois</option>
  <option value="pastores">Pastores</option>
  <option value="Pug">Pug</option>
  <option value="Salchicahas">Salchicahas</option>
  <option value="Schnauzer">Schnauzer</option>
  <option value="Yorki">Yorki</option>
</select>
</font>
<font size=2>
<input type="submit" value="BUSCAR">
</font>
</form>
<div id="apDiv2">
<p>A B C D E F G pastores<br>
     <br>
H I J K L M N boxer<br>
<br>
O P Q R S T U<br>
<br>
V W X Y Z
 akitas </p>
<p>doberman</p>
</div>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>
<!-- Inicia el Buscador ---- Blaizer-->
</DIV>
<BR>
<!-- Final Buscador-->
</html>
Ahora si funciona en los dos.
Es usted muy pero muy amable por tanta paciencia, espero algún día poder servirle igual, que Dios lo bendiga.
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas