Acceso a las propiedades del objeto document

He visto tu ofreciminento de ayuda en lo que a javascript se refiere.
Tengo una duda. Supón que deseo cargar una página web cualquiera y acceder a por ejemplo a su titulo, para esto creo una ventana, cargo la url pero al acceder a cualquiera de las propiedades del documento me da error "acceso denegado". ¿Sabes qué sucede?.
Respuesta
1
Pueden ser varias cosas,
prueba este código, debería funcionar.
<html>
<title>hola pepe!</title>
<script>
document.write(document.title);
</script>
</html>
Si te fuera posible me sería de gran ayuda que me dieras la dir de la página que te da problemas, porque uno de los motivos puede ser el propio servidor (geocities por ejemplo da problemas de este tipo), y ver la página en acción. Por lo que comentas, posiblemente sea que referencias mal a la otra página, si esta en un marco hay que llamarla por su nombre esto es: nombre. Title, porque document es general, como form, pero si en una misma página tienes varios form (o como sucede con los marcos) varios documentos, hay que usar el nombre. Ya si se llaman igual usaríamos el apellido ;) je je
Espero tu respuesta
ta luego! ;)
Gracias por tu ayuda.
Lo que pretendo hacer es rastrear páginas web. Tengo un programa escrito en javascript en mi pc, que básicamente carga una url en una ventana con marcos y posteriormente intenta acceder a algunos datos del documento cargado (titulo, fecha ultima modificación, etc..)
El código es el siguiente (la ventana donde cargo la página web se llama anuncio)
<HTML>
<HEAD>
<TITLE>Control</TITLE>
<SCRIPT LANGUAJE="JavaScript">
function presentaDatos()
{
document.write("Title = ");
document.write(parent.anuncio.document.title);
document.write("<br>");
document.write("Domain = ");
document.write(parent.anuncio.document.domain);
document.write("<br>");
document.write("Fecha = ");
document.write(parent.anuncio.document.lastModified);
document.write("<br>");
}
function cargaVentanaAnuncio()
{
parent.anuncio.document.location="http://www.google.com";
setTimeout("presentaDatos()", 15000);
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="enlaces">
<INPUT type="button" value="CargaVentanaAnuncio" onClick="cargaVentanaAnuncio()">
</FORM>
</BODY>
</HTML>
Gracias nuevamente.
<HTML>
<HEAD>
<TITLE>Control</TITLE>
<SCRIPT LANGUAJE="JavaScript">
function presentaDatos()
{
alert("Titulo:"+top.frames[1].document.title);
alert("Dominio:"+top.frames[1].document.domain);
alert("UMod:"+top.frames[1].document.lastModified);
}
function cargaVentanaAnuncio()
{
alert("Titulo:"+top.frames[1].document.title);
alert("Dominio:"+top.frames[1].document.domain);
alert("UMod:"+top.frames[1].document.lastModified);
top.frames[1].location.href="http://www.google.com";
setTimeout("presentaDatos()", 15000);
//aqui da error porque esta fuera del domino de la página
alert("Titulo:"+top.frames[1].document.title);
alert("Dominio:"+top.frames[1].document.domain);
alert("UMod:"+top.frames[1].document.lastModified);
}
function dos()
{
//aqui funciona todo porque es una página "local"
pepe=window.open('','tmp');
pepe.document.write('hola tio!');
pepe.document.write('<title>soy una ventana</title>');
alert(pepe.document.title);
}
function tes()
{
//aqui da nuevamente error, se debe a un problema de dominios
manolo=window.open('http://www.google.com','tmp');
alert(manolo.document.title);
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="enlaces">
<INPUT type="button" value="CargaVentanaAnuncio" onClick="cargaVentanaAnuncio()">
</FORM>
<FORM NAME="enlaces2">
<INPUT type="button" value="Ventana Dominio Propio" onClick="dos()">
</FORM>
<FORM NAME="enlaces3">
<INPUT type="button" value="Ventana Dominio Google" onClick="tes()">
</FORM>
</BODY>
</HTML>
En lugar de usar write, que lo que hace es borrar el documento y sobreescribir, muestro los datos con varios alert (para el caso nos sirve), se muestran los valores del documento inicial y del documento cargado. Aquí llegamos al punto crítico, puesto que no permite la visualización de datos de documentos que pertenezcana a otro dominio, de ahí lo de accseo denegado, no permite visualizar datos de documentos que se cargan desde otro punto de la red, si lo utilizas con tus documentos o con documentos dentro de tu website, seguramente funcione bien, pero en cuanto utilizas documentos externos no te deja acceder.
Para que veas como funciona esto añado 2 botones, uno que crea una página dinámicamente y en la que es posible acceder a los datos, y luego una cargada desde otro punto, en la que no es posible.
Lo lamento pero con Jscript no es posible hacer (hasta donde alcanzan mis limitados conocimientos) lo que propones.
ta luego! ;)

3 respuestas más de otros expertos

Respuesta
1
Me gustaría, si es posible, que me concretaras un poco más detalladamente tu pregunta.
Quiero ir cargando una secuencia de páginas web (cualesquiera) en una ventana y de alguna manera saber cuando una de ellas no se ha cargado (detectar el error 404. Página no encontrada) El evento onError no me sirve, porque no detecta errores del navegador.
Por esto había pensado en leer el title u otra propiedad del documento para de este modo saber por programa que la página no se ha cargado y poder reaccionar.
Muchas gracias por tu ayuda.
Siento decirte que no he encontrado la manera de manejar ese evento, lo siento.
Respuesta
1
No he entendido muy bien lo que dices. ¿Abres una ventana hija con que página del mismo host?.
Pues me imagino que la página será de un host que funcione con Apache y no te permita más que la lectura del documento.
Esto es algo muy común en Apache/linux.
Te digo Apache porque es lo que conozco pero también podría ser otro servidor seguro me imagino (¿Tomcat?).
Si es por esto no tienes solución.
Creo que lo que intentabas era algo como esto, no;
<html>
<head>
<title>prueba</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function ir(formu){ //v3.0
m=open("http://www.todoexpertos.com","hija","toolbar=yes");
alert(m.document.URL);
alert(m.document.title);
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF">
<form name="form2">
<input type="button" name="boton" value="Ir al sitio web" onclick="ir()">
</form>
</body>
</html>
Efectivamente es eso lo que intento.
Quiero ir cargando una secuencia de páginas web (cualesquiera) en una ventana y de alguna manera saber cuando una de ellas no se ha cargado (detectar el error 404. Página no encontrada) El evento onError no me sirve, porque no detecta errores del navegador. Por esto había apensado en leer el title u otra propiedad del documento para de este modo saber por programa que la página no se ha cargado y poder reaccionar.
Muchas gracias por tu ayuda.
Ese error es el error standard de Apache para cuando no encuentra un documento. Lo que hace Apache cuando alguien solicita un documento y no se encuentra en su servidor es ir a otra página para mostrar este error. Es decir javascript busca el titulo de la página pero como la página no exite no te lo encuentra (por lo tanto n hay titulo, ni URL ni nada de nada) e inmediatamente después Apache direcciona la página a donde tienen configurado el típico mensaje de "Esta página no ha sido encontrada en el servidor.
Respuesta
1
Hay propiedades del objeto document, que solo se pueden modificar en tiempo de diseño, así por ejemplo el "titulo", solo no se puede modificar, solo puedes "leerlo" es decir puede ponerlo en un alert o en algún otro lado, pero solo para mostrarlo. Para poner el nombre, debes hacerlo a la hora de abrir la ventana, con "wondow.open("URL","nombreDeLaVentana","opciones...");"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas