Usando iframe com arquivos locais no Chrome
Estou com dificuldades para descobrir como acessar uma página carregada em um iframe a partir da página externa. Ambas as páginas são arquivos locais e estou usando o Chrome.
Eu tenho uma página externa e muitas páginas internas. A página externa deve sempre exibir o título da página interna (faz sentido no meu aplicativo, talvez menos neste exemplo despojado). Isso funciona sem nenhum problema no AppJS, mas fui solicitado a fazer esse aplicativo funcionar diretamente no navegador. Estou recebendo o erro "Bloqueado um quadro com origem "null" de acessar um quadro com origem "null". Protocolos, domínios e portas devem corresponder.".
Acho que isso se deve à mesma política de origem do Chrome em relação aos arquivos locais, mas isso não me ajudou a corrigir o problema diretamente. Eu posso contornar o problema neste exemplo despojado usando o método window.postMessage porFormas de contornar a política de mesma origem. No entanto, indo além desse exemplo, eu também quero manipular o DOM da página interna da página externa, já que isso tornará meu código muito mais limpo - assim, as mensagens postadas não farão o trabalho.
Página exterior
<!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 Interna
<!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É provável que versões futuras do Chrome suportem contentWindow / contentDocument quando o iFrame carrega um arquivo html local do arquivo html local?, Tentei iniciar o Chrome com a bandeira
--allow-file-access-from-files
Mas não houve alteração nos resultados.
PorDesativar a mesma política de origem no Chrome, Tentei iniciar o Chrome com a bandeira
--disable-web-security
Mas, novamente, não houve alteração nos resultados.
PorO que document.domain = document.domain faz?, Eu tinha ambas as páginas executam o comando
document.domain = document.domain;
Isso resultou no erro "Bloqueado um quadro com origem "null" de acessar um quadro com origem "null". O quadro solicitando acesso configurou "document.domain" para "", mas o quadro que está sendo acessado não. Ambos devem definir "document.domain" com o mesmo valor para permitir acesso."
Por diversão, eu tinha as duas páginas executando o comando
document.domain = "foo.com";
Isso resultou no erro "Erro não detectado: SecurityError: exceção do DOM 18".
Estou debatendo. Qualquer ajuda de pessoas mais conhecedoras seria fantástico! Obrigado!