Problema con botón y javascript

Iniciado por hispapo, 10 Febrero 2013, 10:38 AM

0 Miembros y 1 Visitante están viendo este tema.

hispapo

Hola,

Tengo una página web en la que quiero insertar un buscador de gimp. Los códigos que he encontrado devuelven los resultados de la búsqueda en la propia página de gimp, es decir te redireccionan a una página estilo: "http://www.bing.com/search?que=casa&B1=Buscar&FORM=FRNT&un=doc&v=1".

Lo que yo quiero conseguir es que esta página de resultados aparezca dentro de otra página propia. Es decir: que cuando se pincha en el botón buscar se abra una página dividida en dos frames: el frame superior contendría una página creada por mí en la que apareciera el logotipo de mi página web (solamente eso) y el frame inferior contuviera dicha página de resultados.

Para ello me estoy valiendo del siguiente código:

Código (html4strict) [Seleccionar]
<form name="search" id="search" action="javascript:loadFrames('cabecera.html', 'http://www.bing.com/search?que=$_GET['que']&B1=Buscar&FORM=FRNT&un=doc&v=1')" method="get">
<p>
<font face="arial" size="2">Buscar<font color="#808080"> en Bing:</font></font><br />
<input type="text" id="que" size="18" maxlength="251" name="q" /><input type="submit" value="Buscar" name="B1" /><input type="hidden" name="FORM" value="FRNT" /><input type=
"hidden" name="un" value="doc" /><input type="hidden" name="v" value="1" />
</p>
[code=javascript]<script LANGUAGE="javascript">
function loadFrames(page1, page2) {
framecode = "<frameset rows='15%,85%'>"
+ "<frame src='" + page1 + "'>"
+ "<frame src='" + page2 + "'>"
+ "</frameset>";
page = window.open("");
page.document.open();
page.document.write(framecode);
page.document.close();
}
</script>

</form>[/code]

Con la parte del script se consigue que se abra la página dividida en frames que contiene las dos páginas explicadas anteriormente (la del logotipo de mi página y la de resultados de búsqueda). El resto del código es el típico formulario para insertar el buscador de bing.
Ambos códigos (formulario y script para abrir dos páginas en una pinchando un botón) funcionan perfectamente por separado. Pero al escribir lo siguiente:
action="javascript:loadFrames('cabecera.html', 'http://www.bing.com/search?que=$_GET['q']&B1=Buscar&FORM=FRNT&un=doc&v=1')"
el botón deja de funcionar y no se abre nada.

muchas gracias por la ayuda!!

Ori-chan

Un consejo. Arriba a la derecha hay un cuadro que pone Ge5Hi. Usalo para poner el codigo. Se leera mejor.


EFEX

#2
No es necesario utilizar PHP, podes obtener el valor con js.

Código (html4strict) [Seleccionar]

<form name="search" id="search" method="get">
<p>
<font face="arial" size="2">Buscar<font color="#808080"> en Bing:</font></font>
<br />
<input type="text" id="que" size="18" maxlength="251" name="q" />
<input type="submit" value="Buscar" name="B1" onclick="showTime();" /> <!-- Al hacer click showTime() inicia -->
<input type="hidden" name="FORM" value="FRNT" />
<input type="hidden" name="un" value="doc" />
<input type="hidden" name="v" value="1" />
</p>
<script LANGUAGE="javascript">
function showTime(){
   var getText = que.value; // Obtenemos lo que se quiere buscar
   loadFrames(
       'cabecera.html',
       'http://www.bing.com/search?q=' + getText + '&go=&qs=ds&form=QBLH&filt=all'); // Le cambie la url para que valla directamente lo que se busque en bing.com
}
function loadFrames(page1, page2) {
   framecode = "<frameset rows='15%,85%'>"
      + "<frame src='" + page1 + "'>"
      + "<frame src='" + page2 + "'>"
      + "</frameset>";
   page = window.open("");
   page.document.open();
   page.document.write(framecode);
   page.document.close();
}
</script>
</form>


Cuando utilizes geshi, con la etiqueta html es suficiente, no agreges la de javascript.
Era eso  :huh:
GITHUB 

hispapo

Muchas gracias!!! Me ha servido de mucho!!!

Lo único, y por saber cómo lo has hecho, ¿cómo sacas esa dirección completa de la búsqueda?

Muchas gracias!

EFEX

Cita de: hispapo en 12 Febrero 2013, 19:24 PM
Lo único, y por saber cómo lo has hecho, ¿cómo sacas esa dirección completa de la búsqueda?

Solo ir a bing.com y buscar algo, en la barra de dirección te fijas que tiene casi el mismo formato.
GITHUB 

hispapo

#5
Buenos días,

Al comprobar el código en varios navegadores me ha surgido un problema, y es que en Internet explorer no me funciona. Coge el resultado de la búsqueda y lo añade a la página original, es decir, si la página original es www.google.es le añade lo siguiente:

Código (html4strict) [Seleccionar]
www.google.es/?q=casa&B1=Buscar&FORM=FRNT&un=doc&v=1

Pero no realiza la búsqueda.

El problema creo que surge de la parte del código que abre dos páginas dentro de una dividida en frames, es decir, en:

Código (html4strict) [Seleccionar]
function loadFrames(page1, page2) {
framecode = "<frameset rows='15%,85%' BORDER=0 FRAMEBORDER=0 FRAMESPACING=0>"
  + "<frame src='" + page1 + "'>"
  + "<frame src='" + page2 + "'>"
  + "</frameset>";
page = window.open("");
page.document.open();
page.document.write(framecode);
page.document.close();
}


Pero no llego a saber cuál es el problema...

Muchas gracias!!

hispapo

He probado a pasar el Debugbar de Internet Explorer, y el único fallo que me da es que "que" no está definido....

La verdad, no sé si será eso porque si utilizo solamente la función que abre dos páginas en frames tampoco me funciona y el DebugBar no me saca ningún fallo.

Alguna idea?? Muchas gracias!!

#!drvy

#7
Cambia

Código (javascript) [Seleccionar]
var getText = que.value;

Por

Código (javascript) [Seleccionar]
var getText = document.getElementById('que').value;

PD: Pulsando "F12" en IE9+ (no se que tal anda en IE8), tienes lo que es la herramienta de desarrollador que tiene consola y editor de recurso avanzado. No hace falta instalar complementos adicionales.

PD2: Si lo vas a manejar todo con javascript, en vez de tener un botón "submit", cámbiale a tipo "button" (el de "Buscar" digo). O haz un event.preventDefault() para por si acaso. Así realmente no envías el formulario pero si lanzas el javascript.

Saludos

hispapo

Muchas gracias por la ayuda!!! Ahora sí que me funciona todo perfectamente!!! ;-)

Buscaré qué es lo que hace eso que comentas de event.preventDefault(), para futuras ocasiones...

Lo que comentas de F12, lo había probado y no conseguía hacerlo funcionar a pesar de tener IE9, y habilitar ciertas cosas que habia encontrado en la web.

Nuevamente, muchas gracias por la ayuda!!!