如何在 JavaScript 中加载文本文件?

2024-01-07

我正在创建一个简单的 WebGL 项目,需要一种加载模型的方法。我决定使用 OBJ 格式,所以我需要一种方法来加载它。该文件(将)存储在服务器上,我的问题是:JS 中的文件如何加载到文本文件中并逐行扫描它,逐个令牌(就像 C++ 中的流一样)?我是 JS 新手,因此我的问题。方法越简单越好。

更新:我使用了你的解决方案,broofa,但我不确定我是否做对了。我从您编写的 forEach 循环中的文件加载数据,但在它之外(即在您的所有代码之后),我一直在填充数据的对象是“未定义”。我究竟做错了什么?这是代码:

var materialFilename;

function loadOBJModel(filename)
{
    // ...

    var req = new XMLHttpRequest();
    req.open('GET', filename);
    req.responseType = 'text';
    req.onreadystatechange = function()
    {
        if (req.readyState == 4)
        {
            var lines = req.responseText.split(/\n/g);
            lines.forEach(function(line)
            {
                readLine(line);
            });
        }
    }
    req.send();

    alert(materialFilename);

    // ...
}

function readLine(line)
{
    // ...

    else if (tokens[0] == "mtllib")
    {
        materialFilename = tokens[1];
    }

    // ...
}

您可以使用XMLHttp请求 https://www.google.com/search?q=mdn%20xmlhttprequest获取文件,假设它来自与您的主网页相同的域。如果没有,并且您可以控制托管文件的服务器,则可以启用CORS https://developer.mozilla.org/en-US/docs/HTTP_access_control没有太多麻烦。例如。

要逐行扫描,可以使用 split()。例如。像这样的东西...

var req = new XMLHttpRequest();
req.open('GET', '/your/url/goes/here');
req.onreadystatechange = function() {
  if (req.readyState == 4) {
    if (req.status == 200) {
      var lines = req.responseText.split(/\n/g);
      lines.forEach(function(line, i) {
        // 'line' is a line of your file, 'i' is the line number (starting at 0)
      });
    } else {
      // (something went wrong with the request)
    }
  }
}

req.send();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JavaScript 中加载文本文件? 的相关文章

  • Javascript 函数查找数字的倍数

    创建一个名为的函数multiplesOf 它将接受两个参数 第一个参数是数字数组 第二个参数是数字 该函数应返回一个新数组 该数组由参数数组中的每个数字组成 该数字是参数数字的倍数 So multiplesOf 5 6 7 8 9 10 3
  • Three.js:缩放几何图形后错误的 BoundingBox

    在我的场景中 我有一个简单的立方体 var test new THREE Mesh new THREE CubeGeometry 10 10 10 new THREE MeshBasicMaterial scene add test 该立方
  • 如何在react-bootstrap中禁用表单提交的

    在下面的代码片段中 我有许多文本类型的输入表单 如果用户点击 我似乎会得到相同的合成事件 就像他们按下提交按钮一样 我想忽略作为表单提交 只允许一个人按下 提交 按钮 我删除了一些表单组以减少示例 在所有情况下 按钮或 ENTER 键 e
  • 如何更改 Google Maps v3 API for Directions 中的开始和结束标记图像

    我使用 DirectionsRender 绘制了一条路线 但我不知道如何用我自己的标记替换通用的 Google 标记 我知道并在正常的谷歌地图情况下使用它 但发现很难用开始和结束的方向标记来做到这一点 如果这是一个愚蠢的问题 感谢您的任何建
  • 摩卡 - Chai Karma“套件未定义”

    我对 jscript tdd 很陌生 遇到了问题 希望有人能告诉我我在做什么 在浏览器中运行测试 通过 HTML 文件 一切正常 通过节点和业力运行它们我得到以下异常 我想在 node js 主机的 karma 中使用 Mocha 和 Ch
  • 隐藏 Div 的父级

    我只是想隐藏父divcomments section div class content content green div div div 我试过这个 document getElementById comments section pa
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • 如何制作没有 ng-repeat 的模板并使用 Angular-drag-and-drop-lists 将数据传递到 $scope?

    我想用角度拖放列表 https github com marceljuenemann angular drag and drop lists使用我自己的网格模板到所见即所得编辑器 如何构建我自己的 HTML 模板而不需要ng repeat因
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 为什么我们在打字稿中使用 HTMLInputElement ?

    我们为什么使用 document getElementById ipv as HTMLInputElement value 代替 document getElementById ipv value 功能getElementById返回具有类
  • 有没有办法在 onclick 触发时禁用 iPad/iPhone 上的闪烁/闪烁?

    所以我有一个有 onclick 事件的区域 在常规浏览器上单击时 它不会显示任何视觉变化 但在 iPad iPhone 上单击时 它会闪烁 闪烁 有什么办法可以阻止它在 iPad iPhone 上执行此操作吗 这是一个与我正在做的类似的示例
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • Vue 和 Vuex:处理依赖的计算属性

    我的应用程序是一个使用 Vuex 在 Vue 中构建的精简电子表格 关键组件是TableCollection Table and Row The TableCollection有一个包含多个的数组Table对象 每个Table有一个包含多个
  • 代码镜像错误:未捕获错误:扩展集中无法识别扩展值([对象对象])

    全部 我目前正在从事一个React Electron项目 该项目的目标是完成一个Markdown编辑器 当我配置codemirror 该程序报告错误说 Uncaught Error Unrecognized extension value
  • Javascript - 水波纹效果

    我需要 JS 上的脚本 它将以 水波纹 样式更改 images html 抱歉 6MB GIF 文件 http fcuunited ru temp listening2 gif http fcunited ru temp listening
  • 在 CKEditor 中设置字体大小和字体系列

    我正在使用 ckeditor 我想问一下这个插件如何设置font family和font size 我尝试过使用 CKEDITOR config font defaultLabel Arial CKEDITOR config fontSiz
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev

随机推荐

  • C++ - 更改 X 窗口中的光标

    我以为这很容易找到 但谷歌搜索却毫无帮助 有没有一个简单的 API 可以改变 X 窗口中的鼠标光标 我知道在 Windows 中你可以只调用 SetCursor include
  • AVPlayer 动态音量控制

    如何动态更改 AVPlayer 的音量 我的意思是 我想在每次按下按钮时将音量静音 给定的代码似乎仅在编译时更改它 运行时怎么办 AVURLAsset asset AVURLAsset URLAssetWithURL self myAsse
  • 类路径中的 ICEfaces 库可防止文件下载时弹出“另存为”对话框

    一旦我将库icefaces jaricepush jaricefaces ace jar添加到我的类路径中以便使用ACE组件 我的另存为对话框就不会弹出吗 我不确定这是否是一个错误 但如果类路径中没有库 它就可以工作 这是我的另存为方法 p
  • 用 pyspark 之前已知的良好值填充 null

    有办法替换吗nullpyspark 数据框中的值与最后一个有效值 还有额外的timestamp and session列 如果您认为需要它们来进行 Windows 分区和排序 更具体地说 我想实现以下转换 session timestamp
  • 将数据从 glReadPixels() 转换为 OpenCV::Mat

    我想从动画中获取每个 OpenGL 帧glReadPixels 并将数据转换为OpenCV 垫 我知道glReadPixels 从下一层到上一层 从左到右 按行获取数据 另一方面 OpenCV 以不同的方式存储数据 有谁知道任何库或任何教程
  • 与 svn 的 SSL 协商失败

    我正在运行一个接受 https 请求的服务器 我已经生成了自己的证书 当在 Firefox 中访问该网站时 我收到未知证书错误 但这没关系 这 我认为 表明端口转发等有效 我正在尝试使用 svn 来解决这个问题 当在服务器上使用 svn 但
  • Java HttpURLConnection.getInputStream 但得到 401 IOException

    我正在用 Java 为 CouchDB 编写一个 REST 客户端 下面的代码应该是相当标准的 this httpCnt connect Map
  • 使用 PIL 或 Numpy 数组,如何从图像中删除整行?

    我想知道如何从图像中删除整行 最好是根据行的颜色 示例 我有一个高度为 5 像素的图像 顶部两行和底部两行是白色 中间行是黑色 我想知道如何让 PIL 识别这一行黑色像素 然后删除整行并保存新图像 我对 python 有一些了解 并且到目前
  • 当调用 onBlur 时,Firefox 中的 relatedTarget 为 null

    我正在尝试创建一条帮助消息 当用户单击切换按钮以显示帮助消息或通过单击页面上的其他位置来单击时 该消息将消失 解决方案似乎是查看relatedTarget的财产onblur事件并防止onblur处理程序从运行时relatedTarget是切
  • 如何在 Android 应用程序级别检查 SIM 卡锁定

    我正在寻找一种方法来查明 Android 设备是否已锁定 SIM 卡 我知道 efs 中应该是存储此设置的文件 问题是没有 root 就无法访问 efs USSD 代码如下 7465625 不再适用于 Samsung 设备上的 Androi
  • 用户控件与 Windows 窗体

    Visual Studio C 中的用户控件和 Windows 窗体有什么区别 非常简单地说 用户控件是一种制作自定义 可重用组件的方法 用户控件可以包含其他控件 但必须由窗体托管 Windows 窗体是控件 包括用户控件 的容器 虽然它包
  • 如何扩展 Google 地图中的共享位置 URL?

    我正在尝试从谷歌地图共享位置链接获取位置 因此我使用 Google Shorten URL API 来扩展 URL 但是当我从 Android 设备共享 Google 地图应用程序的 URL 时 它给了我https maps app goo
  • 自定义 HTTP 授权标头

    我想知道将自定义数据放入 HTTP 授权标头中是否可以接受 我们正在设计一个 RESTful API 我们可能需要一种方法来指定自定义授权方法 作为一个例子 我们称之为FIRE TOKEN验证 根据规范 这样的事情是否有效并允许 Autho
  • 什么是本机构建环境?

    我只是从互联网上阅读信息 目前cmake 关于页面 http www cmake org cmake project about html 我需要信息来填补空白 这有助于了解全局 我希望答案很简单 什么是本机构建环境 背景 我需要知道how
  • jQuery 设置单选按钮

    我正在尝试设置一个单选按钮 我想通过使用值或 ID 来设置它 这是我尝试过的 input radio name cols newcol attr checked true newcol是单选按钮的 id 也许需要进行一些编辑 有两组无线电盒
  • Cardview 中的 ConstraintLayout 添加空白

    我正在尝试创建一个CardView有一个ConstraintLayout组织一些TextView 有时它会按预期显示 但有时 它会添加额外的空白 例如当键盘关闭时 会破坏布局 我下面有一个 GIF 显示CardView在同一时间段内工作和不
  • 使用 SQL Server Server Management Studio 导入/导出数据库

    我认为这很简单 但事实并非如此 我确信有一种简单的方法可以做到这一点 但我无法找到它 我真丢脸 我想导入 导出数据库本身 表 约束 外键等 我宁愿不用它获取数据 但如果没有其他方法 我可以在之后删除它 那么 如何使用 MS SQL Serv
  • 如果没有发生左值到右值的转换,取消引用无效指针是否合法

    尽我所能 我见过的最接近的答案是this https stackoverflow com questions 7346634 dereferencing an invalid pointer then taking the address
  • YouTube 嵌入 iframe 未在 Safari 中显示

    链接是http thecodeclub org http thecodeclub org 还有一个 YouTube 视频 在 Chrome 中工作正常 但 iframe 在 Safari 中仍为空白 有其他人遇到过这个问题或者有解决办法吗
  • 如何在 JavaScript 中加载文本文件?

    我正在创建一个简单的 WebGL 项目 需要一种加载模型的方法 我决定使用 OBJ 格式 所以我需要一种方法来加载它 该文件 将 存储在服务器上 我的问题是 JS 中的文件如何加载到文本文件中并逐行扫描它 逐个令牌 就像 C 中的流一样 我