我正在尝试编写一个简单的DHTML应用程序,该应用程序将选定的经典国际象棋游戏(* .txt)读入iframe,并从主页读取它,以便为用户播放。从我的HDD加载.html文件时,Chrome出现了同源策略(SOP)错误。我没有运气就在网上搜索答案。
chrome-disable-same-origin-policy-in-local-files
browser-same-origin-policy
当我第一次加载下面的网页时,主页可以从iframe访问HTMLdocument对象(未加载文件),但是我选择了test.txt(与主页相同的目录),却得到了一个空对象(错误:无法读取null的属性“ body”。)
Chrome会很快修复/启用本地文件的SOP,还是我想做的更好的方法。为了可移植性和易于共享,我不想安装本地Web服务器来使用这些应用程序。
<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>