Foros del Web » Programando para Internet » Javascript »

llamar funcion click de una ventana padre

Estas en el tema de llamar funcion click de una ventana padre en el foro de Javascript en Foros del Web. buenos dias a todos, espero me puedan ayudar con esto tengo una ventana que se abre con window.open con una tabla que al darle click ...
  #1 (permalink)  
Antiguo 26/04/2013, 10:21
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
llamar funcion click de una ventana padre

buenos dias a todos, espero me puedan ayudar con esto

tengo una ventana que se abre con window.open con una tabla que al darle click a un tr se agrega en la ventana padre, al ser agregado lleva un boton en el primer tr y al darle click quiero que se elimine toda la fila pero eso no me esta funcionando por que no se como insertar la funcion click en la ventana padre...

Código Javascript:
Ver original
  1. //esta funcion esta en la ventana padre...
  2. function eliminar(event){}
  3. //esta esta en la ventana hija con la que trato de agregar en click a el boton que agrego...
  4. costo.click(function(){eliminar(event)});
pero la funcion eliminar no se ejecuta por que viene de una ventana hija...

a los que me puedan ayudar gracias...
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"
  #2 (permalink)  
Antiguo 26/04/2013, 13:11
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
Respuesta: llamar funcion click de una ventana padre

sera que eso no se puede hacer?
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"
  #3 (permalink)  
Antiguo 26/04/2013, 14:16
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
Respuesta: llamar funcion click de una ventana padre

se puede poner una funcion a una variable de opener? me explico

si tengo un objeto en una ventana padre y quiero que al darle click haga algo pero ese click se lo voy a poner desde la ventana hija... opener.objeto.click().....??
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"
  #4 (permalink)  
Antiguo 26/04/2013, 14:38
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: llamar funcion click de una ventana padre

mirá estos ejemplo a ver si te sirven de algo
http://foros.emprear.com/javascript/...entana/nv.html
http://foros.emprear.com/javascript/...r_ventana.html
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 26/04/2013, 14:55
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
Respuesta: llamar funcion click de una ventana padre

Cita:
Iniciado por emprear Ver Mensaje
mirá estos ejemplo a ver si te sirven de algo
[url]http://foros.emprear.com/javascript/nueva_ventana/nv.html[/url]
[url]http://foros.emprear.com/javascript/ventana_al_vuelo/generar_ventana.html[/url]
Saludos
Gracias, entiendo tus ejemplos pero al momento de hacer
Código Javascript:
Ver original
  1. boton=opener.getElementById('boton');
  2. boton.setAttribute('onclick','nombreFuncion()');

en versiones de ie<8 no funciona...
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"
  #6 (permalink)  
Antiguo 26/04/2013, 15:25
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: llamar funcion click de una ventana padre

No es un problema del opener precisamente
para ie < 8 no funciona para cualquier atributo, si querés agregar un evento podés utilizar esto

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>titulo</title> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<script type="text/javascript">
//<![CDATA[
function sa(){
var boton=document.getElementById('boton');
boton.setAttribute('title','Título Agregado');
if(navigator.userAgent.indexOf("MSIE 7.0") != -1){
boton.onclick = function(){eval(nombreFuncion(this)); };
}else{
boton.setAttribute('onclick','nombreFuncion(this)');
}
}

function nombreFuncion(elemento){
alert(elemento.id);
}
//]]>
</script>

</head>
<body>
<button onclick="sa()">Agrega atributos</button>
<button id="boton">boton con atributos agregados</button>
</body>
</html> 
Fijate que el "title" si lo agrega
si preferís no usar eval vas a tener que utillizar attachEvent.
Aqui te dejo un ejemplo de uso (en ie > 8 se utiliza addEventListener)

http://www.forosdelweb.com/f13/addev...2/#post4377485

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 26/04/2013, 15:34
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
Respuesta: llamar funcion click de una ventana padre

Cita:
Iniciado por emprear Ver Mensaje
No es un problema del opener precisamente
para ie < 8 no funciona para cualquier atributo, si querés agregar un evento podés utilizar esto

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>titulo</title> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<script type="text/javascript">
//<![CDATA[
function sa(){
var boton=document.getElementById('boton');
boton.setAttribute('title','Título Agregado');
if(navigator.userAgent.indexOf("MSIE 7.0") != -1){
boton.onclick = function(){eval(nombreFuncion(this)); };
}else{
boton.setAttribute('onclick','nombreFuncion(this)');
}
}

function nombreFuncion(elemento){
alert(elemento.id);
}
//]]>
</script>

</head>
<body>
<button onclick="sa()">Agrega atributos</button>
<button id="boton">boton con atributos agregados</button>
</body>
</html> 
Fijate que el "title" si lo agrega
si preferís no usar eval vas a tener que utillizar attachEvent.
Aqui te dejo un ejemplo de uso (en ie > 8 se utiliza addEventListener)

[url]http://www.forosdelweb.com/f13/addeventlistener-volver-loca-1038982/#post4377485[/url]

Saludos
Gracias, eso fue falta de logica de mi parte por que e usado tanto attachEvent como addEventListener...

aunque acabo de hacer la prueba y me funciona pero solo si tengo la ventana hija abierta ya que el boton se inserta en la ventana padre dinamicamente... que estaré haciendo mal??
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"

Última edición por elasesino_broly; 26/04/2013 a las 15:45
  #8 (permalink)  
Antiguo 26/04/2013, 15:51
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
Respuesta: llamar funcion click de una ventana padre

solo se ejecuta si la ventana hija esta abierta es decir el evento lo resguistra en esa venta y no en la ventana padre...

que estare haciendo mal?
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"
  #9 (permalink)  
Antiguo 26/04/2013, 16:04
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: llamar funcion click de una ventana padre

mirá, amplié mi ejemplo anterior y funciona, no lo hice con una nueva ventana.
Agregaste el id al nuevo botón?


Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>titulo</title> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript">
//<![CDATA[
function sa(){
boton.setAttribute('title','Título Agregado');
if(navigator.userAgent.indexOf("MSIE 7.0") != -1){
boton.onclick = function(){ eval(nombreFuncion(this)); };
}else{
boton.setAttribute('onclick','nombreFuncion(this)',0);
}
}

function nombreFuncion(elemento){
alert(elemento.id);
}


function crearBoton(){
var botonx=document.createElement("BUTTON");
botonx.id = "boton";
botonx.innerHTML = "boton con atributos agregados";
document.body.appendChild(botonx);
}
//]]>
</script>
</head>
<body>
<button onclick="crearBoton()">Crear Botón</button><br />
<button onclick="sa()">Agregar atributos</button><br />
</body>
</html> 

Si no pasá tus códigos, de padre e hija

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 26/04/2013, 16:13
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: llamar funcion click de una ventana padre

agrego, asi también funciona

Código Javascript:
Ver original
  1. function crearBoton(){
  2. var botonx=document.createElement("BUTTON");
  3. botonx.id = "boton";
  4. botonx.title = "titulos del botón creado";
  5. botonx.innerHTML = "boton con atributos agregados";
  6. botonx.onclick = function(){
  7. nombreFuncion(this);
  8. };
  9. document.body.appendChild(botonx);
  10. }

sin necesidad de agregar atributos con la primer función (funciona en ie7/8 ok)
fijate de hacerle un append child al opener
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 26/04/2013, 16:22
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
Respuesta: llamar funcion click de una ventana padre

Cita:
Iniciado por emprear Ver Mensaje
agrego, asi también funciona

Código Javascript:
Ver original
  1. function crearBoton(){
  2. var botonx=document.createElement("BUTTON");
  3. botonx.id = "boton";
  4. botonx.title = "titulos del botón creado";
  5. botonx.innerHTML = "boton con atributos agregados";
  6. botonx.onclick = function(){
  7. nombreFuncion(this);
  8. };
  9. document.body.appendChild(botonx);
  10. }

sin necesidad de agregar atributos con la primer función (funciona en ie7/8 ok)
fijate de hacerle un append child al opener
Saludos
tus ejemplos los pruebo y funcionan

pero en lo que estoy haciendo al hacer appendChild del boton a opener.document.table

no inserta el boton... en ie<=8...
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"
  #12 (permalink)  
Antiguo 26/04/2013, 18:31
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: llamar funcion click de una ventana padre

Cita:
Iniciado por elasesino_broly Ver Mensaje
tus ejemplos los pruebo y funcionan

pero en lo que estoy haciendo al hacer appendChild del boton a opener.document.table

no inserta el boton... en ie<=8...
PAra que funcione hay que hacerlo asi
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>titulo</title> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript">
//<![CDATA[

function crearBoton(){
var body_padre = window.opener.document.body;
var botonx=body_padre.document.createElement("BUTTON");
botonx.id = "boton";
botonx.title = "titulos del botón creado";
botonx.innerHTML = "boton con atributos agregados";
botonx.onclick = function(){
opener.nombreFuncion(this);
};
body_padre.appendChild(botonx);
}
//]]>
</script>
</head>
<body>
<button onclick="crearBoton()">Crear Botón</button><br />
</body>
</html>
faltaría solucionar el tema de que si la ventana se cierra la función nombreFuncion() ya no se ejecuta
voy a analizarlo un poco


Ah, un detalle importante, en Ie y Chrome no trabaja en local
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 26/04/2013 a las 18:36
  #13 (permalink)  
Antiguo 27/04/2013, 23:02
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
Respuesta: llamar funcion click de una ventana padre

Cita:
Iniciado por emprear Ver Mensaje
PAra que funcione hay que hacerlo asi
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>titulo</title> 
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript">
//<![CDATA[

function crearBoton(){
var body_padre = window.opener.document.body;
var botonx=body_padre.document.createElement("BUTTON");
botonx.id = "boton";
botonx.title = "titulos del botón creado";
botonx.innerHTML = "boton con atributos agregados";
botonx.onclick = function(){
opener.nombreFuncion(this);
};
body_padre.appendChild(botonx);
}
//]]>
</script>
</head>
<body>
<button onclick="crearBoton()">Crear Botón</button><br />
</body>
</html>
faltaría solucionar el tema de que si la ventana se cierra la función nombreFuncion() ya no se ejecuta
voy a analizarlo un poco


Ah, un detalle importante, en Ie y Chrome no trabaja en local
Saludos
Gracias por tu respuesta lo probe y funciona.. ya estoy adaptando mi codigo..
intente con attachEvent, onclick, setAttribute y igual funciona solo si dejo la ventana hija abierta...
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"

Última edición por elasesino_broly; 28/04/2013 a las 08:08
  #14 (permalink)  
Antiguo 28/04/2013, 08:30
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
Respuesta: llamar funcion click de una ventana padre

La forma en que logre que se ejecute el evento es con jquery y agregando el evento desde la ventana padre despues que se agrega el boton...

tendre que agregar los eventos al momento en que le hagan focus() a la ventana padre con attachEvent...
no se si se pueda pero lo voy a intentar...! si llego a la solucion coloco el codigo por si alguien mas llega a estar en la misma situación.
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"
  #15 (permalink)  
Antiguo 28/04/2013, 09:16
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: llamar funcion click de una ventana padre

Cita:
Iniciado por elasesino_broly Ver Mensaje
La forma en que logre que se ejecute el evento es con jquery y agregando el evento desde la ventana padre despues que se agrega el boton...

tendre que agregar los eventos al momento en que le hagan focus() a la ventana padre con attachEvent...
no se si se pueda pero lo voy a intentar...! si llego a la solucion coloco el codigo por si alguien mas llega a estar en la misma situación.
Si, yo estuve intentando con jQuery, lo mejor que consegui es esto

Código HTML:
<!DOCTYPE html>
<html lang="es-ar">
<head>
<meta charset="utf-8" />
<title>Html5</title>
<script type="text/javascript" src="http://gdriv.es/emprear/css-js/jquery-1.9.0.min.js"></script>
<style type="text/css">
/*<![CDATA[*/
h1{
color: darkred;
}
/*]]>*/
</style>

<script type="text/javascript">
//<![CDATA[
function nombreFuncion(elemento){
alert(elemento.id);
}

//]]>
</script>
</head>
<body>
<button onclick="window.open('nueva.html','nv','width=400,height=400');">abre ventana</button>
<div id="demo">Contenido modificable desde nueva ventana</div>
</body>
</html> 
y nueva.html

Código HTML:
<!DOCTYPE html>
<html lang="es-ar">
<head>
<meta charset="utf-8" />
<title>nueva ventana</title>
<script type="text/javascript" src="http://gdriv.es/emprear/css-js/jquery-1.9.0.min.js"></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
	
	$('#cambia_texto').click(function() {  
	var div_demo = window.opener.jQuery("#demo");
	var body_opener = window.opener.jQuery("body");
	div_demo.html("Contenido modificado");
	$(body_opener).append("<h1 onclick='nombreFuncion(this)' id='header1'>Emprear</h1>");
	});	

});

//]]>
</script>
</head>
<body>
<button onclick="parent.document.body.style.background = 'lime';">fondo parent (afecta ventana actual</button><br />
<button onclick="opener.document.body.style.background = 'lime';">fondo opener (afecta ventana padre)</button><br />
<button id="cambia_texto">modificar contenido div demo opener y agregar elemento h1</button><br />
</body>
</html> 
Funciona aunque cierre la ventana
El problema es pasar parámetros en el onclick del append.
si lo hago de la otra forma, haciendo un append() sobre el elemento del opener, puedo pasar parámetros, pero si destruimos la nueva ventana, ya no se ejecuta,
opener.mifunción() queda indefinida

Saludos

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #16 (permalink)  
Antiguo 28/04/2013, 17:22
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
Respuesta: llamar funcion click de una ventana padre

Cita:
Iniciado por emprear Ver Mensaje
Emprear
Funciono tu ejemplo... aparte también ya había buscado por mi parte pero tu solución es mas optima que la mía...

Muchas gracias
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"
  #17 (permalink)  
Antiguo 29/04/2013, 07:31
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
Respuesta: llamar funcion click de una ventana padre

Cita:
Iniciado por emprear Ver Mensaje
emprear

Saludos
Seria bueno una opinión tuya en este tema ya que
por lo que veo tienes experiencia....

http://www.forosdelweb.com/f13/javascript-jquery-1048738/

Saludos
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"
  #18 (permalink)  
Antiguo 29/04/2013, 08:31
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: llamar funcion click de una ventana padre

Cita:
Iniciado por elasesino_broly Ver Mensaje
Seria bueno una opinión tuya en este tema ya que
por lo que veo tienes experiencia....

http://www.forosdelweb.com/f13/javas...query-1048738/

Saludos
De alguna manera ya opiné algo al respecto aquí
http://www.forosdelweb.com/f13/javas...3/#post4416325

Es un tema que se repite con frecuencia. Creo que lo más apropiado es opinar sobre ejemplos concretos.
En este otro post, que no habla exactamente de lo mismo, hago una referencia que de alguna forma está vinculada
http://www.forosdelweb.com/f13/desac...4/#post4414815

Es decir, las herramientas están ahi, hay que utilizarlas cuando corresponda.
Cortarías una manzana con un serrucho?
Cortarías una rama con un cuchillo?
Espero se entienda la analogía.
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #19 (permalink)  
Antiguo 29/04/2013, 10:01
 
Fecha de Ingreso: abril-2013
Ubicación: venezuela
Mensajes: 92
Antigüedad: 11 años
Puntos: 1
Respuesta: llamar funcion click de una ventana padre

Cita:
Iniciado por emprear Ver Mensaje
De alguna manera ya opiné algo al respecto aquí
[url]http://www.forosdelweb.com/f13/javascript-jquery-1048243/#post4416325[/url]

Es un tema que se repite con frecuencia. Creo que lo más apropiado es opinar sobre ejemplos concretos.
En este otro post, que no habla exactamente de lo mismo, hago una referencia que de alguna forma está vinculada
[url]http://www.forosdelweb.com/f13/desactivar-javascript-1047844/#post4414815[/url]

Es decir, las herramientas están ahi, hay que utilizarlas cuando corresponda.
Cortarías una manzana con un serrucho?
Cortarías una rama con un cuchillo?
Espero se entienda la analogía.
Saludos
Se entiende, pero por lo que veo yo falle por que tuve que importar toda la libreria jquery para poder hacer esta parte en la que me ayudaste por que el resto del sistema que estoy desarrollando esta completamente hecho en javascript puro sin librerias...

Saludos
__________________
"Para el logro del triunfo es necesario pasar por las sendas de los sacrificios"
  #20 (permalink)  
Antiguo 29/04/2013, 10:08
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: llamar funcion click de una ventana padre

Cita:
Iniciado por elasesino_broly Ver Mensaje
Se entiende, pero por lo que veo yo falle por que tuve que importar toda la libreria jquery para poder hacer esta parte en la que me ayudaste por que el resto del sistema que estoy desarrollando esta completamente hecho en javascript puro sin librerias...

Saludos
En todo caso fallamos, porque yo también la usé.
Probablemente se pueda resolver con js puro, tendremos que estudiar un poco más.
De todas formas, se encuentra una solución, y eso también vale
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: funcion, padre, ventana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:55.