[Tool] Chrome内的本地网页,使用XMLHttpRequest读取本地档案

[Tool] Chrome内的本地网页,使用XMLHttpRequest读取本地档案

问题情景

开发Cordova这类以网页内容作为UI的Hybrid APP时,开发人员可以使用IDE的功能将程序布署到手机或是仿真器来侦错。但是以笔者的经验来说,要检视HTML网页元素、观看CSS样式继承,最顺手的开发者工具还是Chrome。这时如果开发人员选择透过Chrome来模拟Hybrid APP,以档案方式加载本地网页来侦错,并且在网页里使用了XMLHttpRequest来额外加载本地档案(ex:AngularJS里Route功能的TemplateURL),在Chrome上会呈现下列的错误讯息:

Failed to execute ‘send‘ on ‘XMLHttpRequest‘: Failed to load ‘file:///C:/Users/Clark/Desktop/XhrFileAccessSample/content.txt‘.

发生这个错误的原因,是因为Chrome基于安全性的考虑,禁止本地网页使用XMLHttpRequest来读取本地档案。这也就造成了相同的HTML页面内容,布署到手机或者仿真器可以正常使用XMLHttpRequest,而在Chrome上执行却无法正常使用XMLHttpRequest。

解决方案

为了让Chrome上执行的本地网页,也能正常使用XMLHttpRequest来读取本地档案内容。开发人员可以在启动Chrome的快捷方式上,加入「--allow-file-access-from-files」参数,来开启XMLHttpRequest读取档案功能。后续使用这个快捷方式开启Chrome执行本地网页,就可以正常使用XMLHttpRequest来读取本地档案内容。

  • 快捷方式设定

  • index.html
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
    
        <h1 id="displayBox"></h1>
    
        <script>
    
            // DisplayBox
            function display(message) {
                var displayBox = document.getElementById("displayBox");
                displayBox.innerHTML = message;
            }        
    
            // XMLHttpRequest
            var xhr = new XMLHttpRequest();
    
            xhr.onload = function () {
                display(xhr.responseText);
            };
    
            try {
                xhr.open("get", "content.txt", true);
                xhr.send();
            }
            catch (ex) {
                display(ex.message);
            }        
    
        </script>
    </body>
    </html>
    
  • content.txt
    Clark
    

范例下载

范例下载:点此下载

时间: 2024-08-02 15:59:15

[Tool] Chrome内的本地网页,使用XMLHttpRequest读取本地档案的相关文章

把数据导入到本地的EXcel中和读取本地的EXCEL到list中

public class TestCaseManager{ public static final String title_caseID="测试例ID"; public static final String title_caseName="测试名"; public static final String title_testResult="测试结果"; public static final String title_testTime =&q

通过scrapy内置的ImagePipeline下载图片到本地

1.通过scrapy内置的ImagePipeline下载图片到本地 1.通过scrapy内置的ImagePipeline下载图片到本地 1)在settings.py中打开 ITEM_PIPELINES 的注释,在  ITEM_PIPELINES 中加入 ITEM_PIPELINES = { 'spider_first.pipelines.SpiderFirstPipeline': 300, 'scrapy.pipelines.images.ImagesPipeline':5, #后面的数字代表执

创建局域网内远程git仓库,并将本地仓库push推到远程仓库中

转自原文 创建局域网内远程git仓库,并将本地仓库push推到远程仓库中 1. 先远程登录局域网内服务器 2. 在服务器里 切换到某个文件夹下, 然后新建一个文件夹用作git仓库(文件夹名最好跟准备推到服务器的仓库文件夹名相同), 并切换到此文件夹下, 接着将用git init 命令在此文件夹下建立一个git 仓库(图中的—bare参数为建立一个裸仓库), 然后退出服务器. 3. 退出服务器后,在本地路径切换到本地仓库的根目录中, 若本地没建立仓库,则先用git init 命令建立本地仓库,如图

UIWebView加载本地网页与图片的方法

  UIWebView加载工程本地网页与本地图片 - (void)viewDidLoad{    [super viewDidLoad];        NSString *filePath = [[NSBundle mainBundle]pathForResource:@"1" ofType:@"html"];    NSString *htmlString = [NSString stringWithContentsOfFile:filePath encodin

前台JS(type=‘file’)读取本地文件的内容,兼容各种浏览器

[自己测了下,能兼容各种浏览器,但是读取中文会出现乱码.自己的解决方法是用notepad++把txt文件编码改为utf-8(应该是和浏览器编码保持一致吧?..)] 原文  http://blog.csdn.net/xwq1012/article/details/41941895 参考如下: http://blog.csdn.net/lejuo/article/details/11528243 前台JS读取本地文件内容,兼容IE7.8.9.10 FF Chrome等各种版本,纠结了好长时间,终于找

本地jar包 安装到本地仓库中的命令

maven 项目 本地jar包 安装到本地仓库中去: 首先进入到该文件所在文件夹内 若不在直接绝对路径就可以.注意命令中的空格 mvn install:install-file  -Dfile=文件名称(如:md5.jar) -DgroupId=com.capinfo.crypt -DartifactId=md5 -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true

Bitmap转为本地URL并存在Card && 本地URL转Bitmap

附各种转换: http://glblong.blog.51cto.com/3058613/1304090 这里要申明权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> bitmap转本地URL: public static String getSDPath() { File sdDir = null; boolean sdCardExist = Environmen

H5读取本地文件操作

H5读取本地文件操作 本文转自:转:http://hushicai.com/2014/03/29/html5-du-qu-ben-di-wen-jian.html感谢大神分享. 常见的语言比如php.shell等,是如何读取文件的呢? 实际上,大多数语言都需要先获取文件句柄,然后调用文件访问接口,打开文件句柄,读取文件! 那么,HTML5是否也是这样的呢? 答案是肯定的! HTML5为我们提供了一种与本地文件系统交互的标准方式:File Api. 该规范主要定义了以下数据结构: File Fil

JS读取本地文件及目录的方法

Javascript是网页制作中离不开的脚本语言,依靠它,一个网页的内容才生动活泼.富有朝气.但也许你还没有发现并应用它的一些更高级 的功能吧?比如,对文件和文件夹进行读.写和删除,就象在VB.VC等高级语言中经常做的工作一样.怎么样,你是否需要了解这方面的知 识?那就请跟我来,本文将详细描述如何使用Javascript语言进行文件操作. 一.功能实现核心:FileSystemObject 对象 其实,要在Javascript中实现文件操作功能,主要就是依靠FileSystemobject对象.