javascript - 无需网络服务器即可动态获取静态 HTML 页面

标签 javascript

有一个静态页面myapp/page.html和同一目录中的静态文件 myapp/data.txt .我想在浏览器中打开该页面从文件系统,没有网络服务器,并获取 myapp/data.txt 的内容文件。应该可以定期重新加载该文件以检查其内容是否已更改。

  • fetch('file:///myapp/data.txt')由于某些安全错误无法正常工作 Fetch API cannot load file:///myapp/data.txt
  • 加载图片 img.src='data.txt'也不起作用,它会加载可以在网络选项卡中看到的文件,但是当您尝试将其作为图像内容读取时,它会提示该图像已损坏。

作为最后的手段,可以更改 data.txt进入data.js并通过 script.src='data.js' 加载它但也许它也可以以某种方式将其作为文本加载?

最佳答案

As a last resort it's possible to change data.txt into data.js and load it via script.src='data.js' but maybe it's somehow possible to load it as a text too?

是的,你可以使用旧的 JSON-P method , 但有一个静态命名的函数。

基本上,您的主脚本中有如下内容:

window.onDataLoad = (data) => {
  // do something with data here
}

// Inject script tag wherever you want to reload the data
const scriptEl = document.createElement('script');
scriptEl.src = 'data.js';
document.querySelector('head').appendChild(scriptEl);

然后,在您的 data.js 中,像这样:

window.onDataLoad( << YOUR DATA HERE >> );

最后...只是想说明一下,我很同情!可笑的是 fetch() 无法处理这个。当远离 XHR 时,这是一个从 HTTP 中提取数据的好机会。遗憾的是,这并没有发生。

关于javascript - 无需网络服务器即可动态获取静态 HTML 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55754473/

相关文章:

javascript - 使用 mongoose/mongoDB 创建/更新对象

javascript - 用于 jquery 布局的自定义切换器

javascript - jQuery 改变焦点在 tab 或 focusout

javascript - jQuery - 图像替换转换 [Safari 中的问题]

javascript - 列表对象 ID 值与对话框模式属性绑定(bind)

javascript - 按单词拆分,除非短语包含该单词

javascript - 使用正则表达式从 Javascript 中的字符串中提取多个日期

Javascript:递归函数为现有值返回未定义

javascript - jQuery 中的函数变量

javascript - 使用 mailto : won't fill subject field 发送电子邮件