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。我只想获取文件夹中的文件列表!如果浏览器可以获取文件列表,我们将遇到大麻烦。