Usando iframe con archivos locales en Chrome
Me resulta difícil descubrir cómo acceder a una página cargada en un iframe desde la página exterior. Ambas páginas son archivos locales, y estoy usando Chrome.
Tengo una página externa, y muchas páginas internas. La página externa siempre debe mostrar el título de la página interna (tiene sentido en mi aplicación, quizás menos en este ejemplo simplificado). Esto funciona sin problemas en AppJS, pero me han pedido que haga que esta aplicación funcione directamente en el navegador. Estoy recibiendo el error "Bloquea un fotograma con origen "nulo" al acceder a un fotograma con origen "nulo". Los protocolos, dominios y puertos deben coincidir.".
Creo que esto se debe a la misma política de origen de Chrome con respecto a los archivos locales, pero eso no me ha ayudado a solucionar el problema directamente. Puedo solucionar el problema en este ejemplo simplificado utilizando el método window.postMessage porFormas de eludir la política del mismo origen.. Sin embargo, yendo más allá de este ejemplo, también quiero manipular el DOM de la página interna desde la página externa, ya que esto hará que mi código sea mucho más limpio, por lo que la publicación de mensajes no hará el trabajo.
Página externa
<!DOCTYPE html>
<html>
<head>
<meta name="viewport">
</head>
<body>
This text is in the outer page
<iframe src="html/Home.html" seamless id="PageContent_Iframe"></iframe>
<script src="./js/LoadNewPage.js"></script>
</body>
</html>
Página interior
<!DOCTYPE html>
<html>
<head>
<title id="Page_Title">Home</title>
<meta name="viewport">
</head>
<body>
This text is in the inner page
</body>
</html>
JavaScript
var iFrameWindow = document.getElementById("PageContent_Iframe").contentWindow;
var pageTitleElement = iFrameWindow.$("#Page_Title");
Por¿Es probable que las futuras versiones de Chrome sean compatibles con contentWindow / contentDocument cuando iFrame carga un archivo html local desde un archivo html local?, Intenté lanzar Chrome con la bandera
--allow-file-access-from-files
Pero no hubo cambio en los resultados.
PorDeshabilitar la misma política de origen en Chrome, Intenté lanzar Chrome con la bandera
--disable-web-security
Pero nuevamente no hubo cambio en los resultados.
Por¿Qué hace document.domain = document.domain?, Tenía ambas páginas ejecutando el comando
document.domain = document.domain;
Esto resultó en el error "Bloquea un fotograma con origen "nulo" al acceder a un fotograma con origen "nulo". El marco que solicitó acceso estableció "document.domain" en "", pero el marco al que se accedió no lo hizo. Ambos deben establecer "document.domain" en el mismo valor para permitir el acceso."
Por diversión, tuve ambas páginas ejecutando el comando
document.domain = "foo.com";
Esto resultó en el error "Error no detectado: error de seguridad: excepción de DOM 18".
Estoy tambaleando. ¡Cualquier ayuda de personas más conocedoras sería fantástica! ¡Gracias!