我有这个代码可以正常使用本地文件:
<html>
<body>
<iframe id="frame1" name="frame1" frameborder=0 src="form.html" width=100% height=70%></iframe>
</body>
<script type='text/javascript'>
window.onload= function(){
var iframe = document.getElementById('frame1');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var input = innerDoc.getElementsByName('input1')[0].value;
alert(input);
}
</script>
</html>
form.html:
<input name="input1" type="text" value="testing"/>
一切都好,但是当我改变iframe的src时:
<iframe id="frame1" name="frame1" frameborder=0 src="form.html" width=100% height=70%></iframe>
使用:
<iframe id="frame1" name="frame1" frameborder=0 src="http://test.hklearningmap.com/form.html" width=100% height=70%></iframe>
它不起作用。如何在不使用form.html将本地文件上传到同一位置的情况下使其工作?感谢。
答案 0 :(得分:1)
您正在遇到浏览器强加的Same Origin Policy。在Origin A的窗口中运行的JavaScript代码无法从Origin B访问窗口(框架)中的文档。
有一些例外,例如两个文件都为document.domain
分配相同的值时。但是可以设置的值有限制(松散地,你只能设置一个超级域,例如你可以从example.com
加载的页面设置www.example.com
),当然这两个文件都必须设置它(因为这种合作告诉浏览器可以允许跨源脚本)。
答案 1 :(得分:0)
您无法使用js访问远程html内容,因为您将其加载到iframe中。阅读相同的原产地政策。