Underc0de - La Casa de los Informáticos

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: $francisco en Septiembre 19, 2016, 09:26:07 PM

Título: ¿como cambiar contenido de un frame con frameset?
Publicado por: $francisco en Septiembre 19, 2016, 09:26:07 PM
index.php

Código (html5) [Seleccionar]
<!DOCTYPE html>
<html>
<script type="text/javascript" src="js/jquery-3.1.0.min.js"></script>
<script type="text/javascript" src="js/rq.js"></script>
<FRAMESET rows="20%,80%">
<frame id="algo" name="mainFrame" src="frames/header.php" noresize="noresize"></frame>
<FRAMESET cols="15%,85%">
<frame src="frames/sidebar.php" noresize="noresize"></frame>
<frame src="frames/body.php" noresize="noresize"></frame>
</FRAMESET>
</FRAMESET>
</html>


header.php

Código (html5) [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="css/header.css">
</head>
<body>
header
</body>
</html>


rq.js

Código (javascript) [Seleccionar]
$(document).ready(function(){
window.frames[1].document.body.style.background = "blue";
});


Lo he intentado con multitud de ejemplo y no funciona.

Código (javascript) [Seleccionar]
$('body', $('#algo')[0].contentWindow.document).text('cambiado')

Código (javascript) [Seleccionar]
$('#algo').contents().find('body').text('cambiado');

Pero ninguna de estas funcina ¿donde está el problema? porque parece ser que debería funcionar y no puedo acceder a cambiar nada de el frame.
Título: Re:¿como cambiar contenido de un frame con frameset?
Publicado por: grep en Septiembre 20, 2016, 01:44:33 AM
Probando las tres formas:

(1)El index es cero
Código (javascript) [Seleccionar]
window.frames[0].document.body.style.background = "blue"

(2)Igual
Código (javascript) [Seleccionar]
$('body', $('#algo')[0].contentWindow.document).text('cambiado')
o utilizando contents():
Código (javascript) [Seleccionar]
$('body', $('#algo').contents()).text('cambiado');

(3)Igual
Código (javascript) [Seleccionar]
$('#algo').contents().find('body').text('cambiado')


Si esto no funciona, entonces debe ser que estas probando tu código sin un servidor. Si ese es el caso, el problema radica en una política de seguridad que implementa el navegador llamada "Same-origin policy". Para poder seguir ejecutando tu código en local y sin un servidor, entonces debes configurar tu navegador para desbloquear esa restricción. Por ejemplo, en google chrome debes utilizar el parámetro --disable-web-security al iniciar.

Saludos
Título: Re:¿como cambiar contenido de un frame con frameset?
Publicado por: $francisco en Septiembre 20, 2016, 03:27:40 PM
Yo utilizo xamp, seguramente será lo de la politica de seguridad pero de ser así mejor no utilizar frames ya que lo que estoy buscando es que funcione el código en cualquier navegador. Gracias.