2010-03-31 18 views
6

HI, Sorprendentemente, he encontrado problemas, en el navegador Chrome, al llamar a las funciones de la ventana principal de JavaScript. Si tengo una ventana con una función de JavaScript definida en ella¿Cómo llamar a la función principal de ventana en el navegador chrome?

<script type="text/javascript"> 
    function dolink() { 
    . . . 
    } 
</script> 

y tengo una iframe dentro de esa ventana que hace que esta llamada usando jQuery

<script type="text/javascript"> 
$(function() { 
     $('a.arglink').click(function() { 
     window.parent.dolink($(this).attr('href')); 
     return false; 
     }); 
}); 
</script> 

la llamada a Dolink función no funciona Al avanzar con el depurador de JavaScript de Chrome, parece que window.parent.dolink es undefined. Es por diseño o un error que hice? En Firefox y IE funciona bien.

+0

¿Es el iframe en el mismo dominio que el documento de nivel superior? –

+0

sí, en el mismo dominio –

Respuesta

10

finalmente lo encontramos!

Parece que el navegador Chrome no permite hacer referencia a una ventana principal que accede a las páginas con el archivo : protocolo. De hecho, probé el código anterior con archivos en mi máquina, por lo que con una url como file:///C:/mytests/mypage.html. Si pongo esa página en un servidor web, todo funciona como se esperaba.

+2

Tengo el mismo problema con Chrome, pero no se utiliza ningún protocolo de archivos, es puro http – lisak

+1

que acaba de probarlo, eso no funciona: C // Quiero recuperar mi voto popular – almosnow

2

Qué acerca del uso frameElement y ownerDocument

<script type="text/javascript"> 
$(function() { 
     $('a.arglink').click(function() { 
     window.frameElement.ownerDocument.parentWindow.dolink($(this).attr('href')); 
     return false; 
     }); 
}); 
</script> 
+0

no funciona en ningún navegador –

+0

derecho, se olvidó algo – Alsciende

4

debe llamar a un código como que

if(function != undefined) 
{ 
$(function() { 
     $('a.arglink').click(function() { 
     window.parent.dolink($(this).attr('href')); 
     return false; 
     }); 
}); 
} 
+0

Esto realmente no necesita estar dentro de una función anónima ... –

Cuestiones relacionadas