Мне сложно определить, как получить доступ к странице, загруженной в iframe с внешней страницы. Обе страницы - это локальные файлы, и я использую Chrome.
У меня есть внешняя страница и многие внутренние страницы. Внешняя страница должна всегда отображать заголовок страницы для внутренней страницы (это имеет смысл в моем приложении, возможно, в меньшей степени в этом урезанном примере). Это работает без проблем в AppJS, но мне было предложено сделать это приложение непосредственно в браузере. Я получаю сообщение об ошибке "Заблокировал кадр с источником" null "от доступа к кадру с исходным" нулем ". Протоколы, домены и порты должны соответствовать.".
Я думаю, что это связано с той же политикой Chrome, что и локальные файлы, но это не помогло мне устранить проблему напрямую. Я могу обойти проблему в этом урезанном примере, используя метод window.postMessage для Способы обхода политики одного и того же происхождения. Однако, выходя за рамки этого примера, я также хочу манипулировать DOM внутренней страницы с внешней страницы, так как это сделает мой код намного более чистым, поэтому отправка сообщений не будет выполнять эту работу.
Наружная страница
<!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>
Внутренняя страница
<!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");
Per Возможно ли, что будущие выпуски Chrome поддерживают contentWindow/contentDocument, когда iFrame загружает локальный файл html из локального файла html?, я попробовал запустить Chrome с флагом
--allow-file-access-from-files
Но результатов не было.
Per Отключить такую же политику происхождения в Chrome, я попробовал запустить Chrome с флагом
--disable-web-security
Но опять же никаких изменений в результатах не было.
Per Что делает document.domain = document.domain?, у меня обе страницы запускали команду
document.domain = document.domain;
Это привело к ошибке "Заблокировал кадр с исходным" нулем "от доступа к кадру с исходным" нулем ". Кадр, запрашивающий доступ, устанавливает" document.domain "в" ", но к кадру, к которому обращаются, не было. должен установить" document.domain "на то же значение, чтобы разрешить доступ".
Для удовольствия у меня на обеих страницах была запущена команда
document.domain = "foo.com";
В результате произошла ошибка "Неиспользуемая ошибка: SecurityError: DOM Exception 18".
Я барахтаюсь. Любая помощь от более знающих людей была бы фантастической! Спасибо!