从文件中读取字符并使用JavaScript进行比较
read character from file and compare using javascript
我只有两天的JavaScript和HTML。我使用 C 代码创建了一个命名管道,并能够在其中写入字符。命名管道显示为名为"xyz"的文件。现在我尝试使用 HTML + JavaScript 读取此文件,并访问字符。我想检查该命名管道文件上是否出现字符"c"。我现在正在使用 Ubuntu 终端的 echo 命令写入"xyz"。我能够读取字符并显示在 HTML 窗口中,但比较不起作用。以下是我的代码,在"displayContent()"函数中语句
if('c' == ch)
el.innerHTML = 'z';
else;
即使文件"xyz"只有"c"作为其内容,也始终为 false。当文件有"c"时,我希望"z"作为输出,否则浏览器窗口中的内容本身。怎么能做到,请指出我做错了什么?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Read File (via AJAX)</title>
<script type="text/javascript">
var reader = new XMLHttpRequest() || new ActiveXObject('MSXML2.XMLHTTP');
var el;
function loadFile()
{
reader.open('get', 'xyz', true);
reader.onreadystatechange = displayContents;
reader.send(null);
}
function displayContents()
{
if(reader.readyState == 4)
{
var el = document.getElementById('main');
ch = reader.responseText;
if('c' == ch)
el.innerHTML = 'z';
else;
el.innerHTML = ch;
}
}
function delay_ms(delay)
{
var now = new Date();
var desiredTime = new Date().setMilliseconds(now.getMilliseconds() + delay);
while (now < desiredTime)
{
now = new Date();
}
}
</script>
</head>
<div id="main"></div>
<body onload = "loadFile();"></body>
</html>
我认为您的代码无法正常工作 - 我尝试运行它,但无法使用 XHR 加载"xyz"。在Chrome中,我得到:
XMLHttpRequest cannot load file://localhost/Volumes/Macintosh%20HD/Users/ajhomer/Sites/readfile/xyz. Cross origin requests are only supported for HTTP. index.html:14
Uncaught NetworkError: A network error occurred.
但是,如果你让它以某种方式工作,并且想知道为什么你永远不会将"z"作为 innerHTML,那是因为 else 后面的分号:
else;
话虽如此,我做了一个小例子,说明在chrome中工作的东西。
我假设您是通过文件协议加载页面的,如下所示:
file://localhost/Volumes/HD1/Users/user/Sites/readfile/index.html
我的版本使用动态脚本注入而不是XHR,所以不是只写一个字符到'xyz',你必须写一个小的javascript来调用'displayContent',像这样:
var payload = 'c';
displayContents(payload);
然后对于 html 文件:
<!DOCTYPE html>
<html>
<head>
<title>Read File (via dynamic script injection)</title>
<script type="text/javascript">
function loadFile()
{
var scr = document.createElement('script');
scr.onload = function(e) {
console.log(e);
};
scr.onerror = function(e) {
console.log(e);
}
var cachebuster = Math.round(new Date().getTime() / 1000);
scr.src = 'xyz.js?cb='+cachebuster;
document.head.appendChild(scr);
}
function displayContents(ch)
{
var el = document.getElementById('main');
if('c' == ch)
el.innerHTML = 'z';
else
el.innerHTML = ch;
}
</script>
</head>
<div id="main"></div>
<body onload = "loadFile();"></body>
</html>
这可以更优雅地完成 - 这只是一个快速的 POC。
相关文章:
- 使用javascript比较对象中的对象值和数组长度
- 字符串为零的JavaScript比较运算符
- 如何使用 JavaScript 比较字符串变量
- 替换函数后的Javascript比较字符串不起作用
- 点串的Javascript比较
- Javascript比较两个日期以获得差异
- Javascript 比较时间不起作用
- Javascript - 比较字符串环境
- Javascript 比较 == 空替代方案
- 数组值和字符串之间的 JavaScript 比较
- 在 JavaScript 比较后打开 LED
- javascript:比较不同时区的日期
- Javascript 比较时间戳
- Javascript 比较一个数组中的项目
- 使用 JavaScript 比较 2 个数组并创建一个新的对象数组,该数组不包含与 id 字段匹配的对象
- JavaScript 比较运算符中的不一致
- 什么是 Telerik 网格的 IsContainedIn FilterOperator 的 Javascript 比较
- JavaScript - 比较日期
- Javascript 比较两个大小不同的数组,并返回不在第二个数组中的项目
- JavaScript 比较 NUMBER.MIN_VALUE 到 0.0 返回 false