Javascript 访问本地文件的iframe内容
我有文件Javascript 访问本地文件的iframe内容,javascript,jquery,html,iframe,Javascript,Jquery,Html,Iframe,我有文件file:///C:/index.html内部有一个iframe: <iframe id="folder_browser" src="file:///C:/Files/"></iframe> 文件文件夹的内容加载到iframe中,但我无法通过javascript或jquery访问它们。我能做什么 我尝试了$('#文件夹_浏览器').contents().find('body').html()但是没有运气 原因“同源策略”在这种情况下,或者如果您的主页来自某个
file:///C:/index.html
内部有一个iframe:
<iframe id="folder_browser" src="file:///C:/Files/"></iframe>
文件
文件夹的内容加载到iframe中,但我无法通过javascript或jquery访问它们。我能做什么
我尝试了$('#文件夹_浏览器').contents().find('body').html()代码>但是没有运气 原因“同源策略”在这种情况下,或者如果您的主页来自某个域,而iframe文档来自另一个域,则无法获取iframe的内容
“同源策略”是浏览器应用于网页以防止相互通信的一组限制。这些限制防止了internet网站的许多安全问题,例如使用类似的技巧访问存储在本地计算机上的私有数据
然而,有一些方法(和条件)可以绕过这些限制:
window.document.domain变量操作
代理
跨文档消息传递
但是,只有当两个页面都位于同一个域中,并且通过修改两个html页面的内容(特别是它们的Javascript)使页面能够授权彼此通信时,这才是可能的。只有当父页面和iframe子页面都是网页时才能执行此操作:在这种情况下,地址file:///C:/something/不是网址,而是本地目录
可以找到一些关于同源策略的有趣教程
在
,
及
特别是在最后一个示例中,您可以阅读“新的安全性.fileuri.strict_origin_policy首选项,默认为true,如果用户不想在文件URI上严格执行相同的源策略,则可以将其设置为false。”
另一个有趣的信息资源是:
在其中,我发现以下提示可能会有所帮助:
唯一真正能够完全绕过这个问题的跨浏览器解决方案是使用本地Web服务器提供内容,这样您就可以通过HTTP访问内容
换句话说,您必须将web服务器软件安装到您的计算机中,并将其配置为在类似的地址下提供文件
不过,您可以使用html输入类型文件获取文件(与用户交互),下面是一个工作示例:
document.getElementById('loadfile').onchange=函数(事件){
var files=loadfile.files;
var len=files.length;
var outpt=document.getElementById('filelist');
对于(var i=0;iCause“同源策略”,无论是在这种情况下,还是在从一个域获取主页和从另一个域获取iframe文档的情况下,都无法获取iframe的内容
“同源策略”是浏览器应用于网页的一组限制,以防止相互通信。这些限制防止了internet网站的许多安全问题,例如使用类似的技巧访问存储在本地计算机上的私人数据
然而,有一些方法(和条件)可以绕过这些限制:
window.document.domain变量操作
代理
跨文档消息传递
但是,只有当两个页面都位于同一个域中,并且通过修改两个html页面的内容(特别是它们的Javascript),这才是可能的因此,页面可以相互授权通信。只有当父页面和iframe子页面都是网页时,才能这样做:在这种情况下,地址file:///C:/something/不是网址,而是本地目录
可以找到一些关于同源策略的有趣教程
在
,
及
特别是在最后一个示例中,您可以阅读“新的安全性.fileuri.strict_origin_policy首选项,默认为true,如果用户不想在文件URI上严格执行相同的源策略,则可以将其设置为false。”
另一个有趣的信息资源是:
在其中,我发现以下提示可能会有所帮助:
唯一真正能够完全绕过这个问题的跨浏览器解决方案是使用本地Web服务器提供内容,这样您就可以通过HTTP访问内容
换句话说,您必须将web服务器软件安装到您的计算机中,并将其配置为在类似的地址下提供文件
不过,您可以使用html输入类型文件获取文件(与用户交互),下面是一个工作示例:
document.getElementById('loadfile').onchange=函数(事件){
var files=loadfile.files;
var len=files.length;
var outpt=document.getElementById('filelist');
对于(var i=0;iyou由于同源策略而无法执行任何操作。请使用Web服务器。您可以拖动到另一个窗格中,使用来浏览,编写输出json文件夹列表的批处理文件以在主页中使用,或者使用更高级的部署设置,如HTA、Chrome打包应用程序、“节点webkit”(一个字),WinJS/win8或adobe AIR。我只想获取文件夹中的文件列表!如果浏览器可以获取文件列表,我们将遇到大麻烦。由于同源策略,您无法执行任何操作。请使用Web服务器。您可以拖动到另一个窗格中,使用来浏览,编写一个批处理文件,输出json文件夹列表以在主页中使用,或r使用更高级的部署设置,如HTA、Chrome打包的应用程序、“节点webkit”(一个字)、WinJS/win8或adobe AIR。我只想获取文件夹中的文件列表!如果浏览器可以获取文件列表,我们将遇到大麻烦。