Я пытаюсь написать простое приложение DHTML, которое считывает выбранные классические шахматные игры (* .txt) в iframe и читает его с главной страницы, чтобы воспроизвести их для пользователя. Я столкнулся с ошибкой политики одинакового происхождения (SOP) с Chrome при загрузке файла .html с моего жесткого диска. Я ищу ответ в Интернете без удачи.
хром-Disable-же-происхождений-политика в нелокальных-файлах
браузер общего происхождения, политика
Когда я впервые загружаю веб-страницу ниже, главная страница может получить доступ к объекту HTMLdocument из iframe (файл не загружен), но после этого я выбираю test.txt (тот же каталог, что и главная страница), вместо этого я получаю нулевой объект (Ошибка: невозможно прочитать свойство 'body' из null).
Скоро ли Chrome исправит / включит SOP для локального файла или есть лучший подход к тому, что я хочу сделать. Для мобильности и простоты обмена я не хочу устанавливать локальный веб-сервер для использования приложений.
<html><head><title></title>
<script language="JavaScript" type="text/javascript">
<!--
function transferHTML(srcFrame){
//take content of iframe to a Div element
try{
var frameDoc = srcFrame.contentDocument;
alert("1. " + document.location + '\n2. ' + srcFrame.src);
//Comparing the file origin
alert("1. " + srcFrame + "\n2. " + frameDoc);
//Comparing Object type
this.document.getElementById("outerDisplay").innerHTML
= frameDoc.body.innerHTML;
}catch(e){
alert("Error: " + e.message);
}
return false;
}
//-->
</script></head>
<body id="topWindow">
<INPUT TYPE="button" VALUE="test.txt"
onClick="document.getElementById('iframeId').src='test.txt'" >
<INPUT TYPE="button" VALUE="data/test2.html"
onClick="document.getElementById('iframeId').src='data/test2.html'" >
<div id="outerDisplay"></div>
<iframe id="iframeId" width="200" height="200"
style="position:absolute; visibility:visible;"
onload="transferHTML(this);">
Your browser does not support iframes.
</iframe>
</body>
</html>