为什么onreadystatechange函数在Windows中不起作用

时间:2018-08-06 14:04:21

标签: javascript html5

我正在研究ubuntu,脚本工作非常顺利。 在两个OS中,他都调用脚本,但在Windows中,他不参与onreadystatechange函数

这是我的脚本和HTML。

function readTextFile(file,str)
{
	var rawFile = new XMLHttpRequest();	
	rawFile.open("GET", file, false);
	rawFile.onreadystatechange = function ()
	{
		
		if(rawFile.readyState === 4)
		{
			if(rawFile.status === 200 || rawFile.status == 0)
			{
				var allText = rawFile.responseText;
				if(allText.search(str) != -1){
					alert("exist");
					alert(location.pathname);
				}else{
					alert("not exist");
				}
			}
		}
	}
	rawFile.send(null);	
}
<html><head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">

<title>Title</title>
<script language="Javascript" src="C:/Users/to125286/Desktop/python_scraping/js/search.js"></script>
</head>
<body>

	<div>
		<form name="search" onsubmit="return readTextFile('file:///C:/Users/to125286/Desktop/python_scraping/web/All-html.txt',this.string.value);">
			<input name="string" onchange="n = 0;">
			<input type="submit" value="Go">
		</form>
	</div>

<table border="1" cellspacing="2" cellpadding="3">
<tbody>
<tr>
<th>Member Name</th>
<th>Birth-Death</th>
</tr>
<tr>
<td><a href="">ADAMS, George Madison</a></td>
<td>1837-1920</td>
</tr>
<tr>
<td><a href="">ALBERT, William Julian</a></td>
<td>1816-1879</td>
</tr>
<tr>
<td><a href="">ALBRIGHT, Charles</a></td>
<td>1830-1880</td>
</tr>
</tbody>
</table>

<h1>Member</h1>

</body>

我想知道与操作系统是否有关系 你知道为什么吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您正尝试使用XMLHttpRequest读取磁盘(file:/// URL)上的文件。许多网络浏览器都可以防止这种情况,因为这可能会带来安全风险。 Windows上使用的任何浏览器都可能阻止它。

如果您使用的是Chrome,则可以:

  1. 重要:关闭所有其他Chrome窗口。确保没有chrome.exe实例正在运行,否则此技巧将不起作用。
  2. 使用chrome.exe命令行选项启动--allow-file-access-from-files,以暂时禁用该限制。
  3. 打开HTML文件。