方案A,您的用例不允许使用http或php服务器。
您可以使用脚本包含将本地内容作为变量包含在javascript中。 如果您正在从目录中以文件形式本地打开页面,则这是包含本地内容的唯一方法。
要包含本地内容,请将以下内容放在其他脚本标记之上:
<script src="text1.txt"></script>
并编辑您的text1.txt文件,使其将所有内容分配给一个变量:
gbl_text=`...contents of my text file...
...more contents...
...and so on....
`
您可以使用脚本来创建此包含文件,例如(使用下面波浪线~键下的 ` 键):
echo -n "var gbl_text=\`" > text1.txt
cat your-original-file.txt >> text1.txt
echo "\`" >> text1.txt
然后根据需要在你的javascript中使用gbl_text变量...
function dosomething()
{
if (typeof(gbl_text)=='undefined'){
setTimeout('dosomething()',500)
}else{
console.log(gbl_text)
}
}
选项 B,您的使用情况可以使用php-cli内置服务器。
如果您能够运行php-cli,则可以在内置的php Web服务器上打开页面,并通过php调用读写本地内容。要在Linux上安装和使用php,
sudo apt install php7.0-cli
#To use the php built-in webserver, run:
php -S localhost:8000 -t /path/to/your/content
因此,您需要将HTML文件作为HTTP网页打开,而不是作为文件打开:
firefox http://localhost:8000/mypage.html
现在,本地网页正在通过一个实际的(本地)http服务器提供服务,并且您可以使用它来操作本地文件。
这里有一个简单的示例,展示如何使用jQuery和php读写本地文件。请下载并在您的html文件中包含jQuery(请参见jQuery.com)。
dofile.php的内容:
<?php
$dowhat = $_REQUEST['dowhat'];
if ($dowhat=='save'){
$myvar = $_REQUEST['myvar'];
file_put_contents('myfile', $myvar);
}elseif($dowhat=='read'){
$myvar=file_get_contents('myfile');
echo $myvar;
}
?>
我的页面.html的内容:
<script src='jquery-3.2.1.js';></script>
<!--make sure the filename matches the jQuery you use-->
<script>
function savevar(){
var myvar=document.getElementById('mytxt').value
var path="dofile.php?dowhat=save&myvar="+myvar
$.get(path, function(data){
console.log("saved ...\n"+myvar)
alert("saved ...\n"+myvar)
});
}
function clearbox(){
document.getElementById('mytxt').value='reading file...'
setTimeout('getvar()',1000)
}
function getvar(){
var path="dofile.php?dowhat=read"
$.get(path, function(data){
console.log(data);
document.getElementById('mytxt').value=data
;
});
}
</script>
<html>
Type something in the text box.<br>
Use the Read and Write buttons to verify <br>
text is saved and read back.<br>
<input id='mytxt' value='type text here' onclick=document.getElementById('mytxt').value=''><br>
<input type='button' value='Save' onclick=savevar() ><input type='button' value='Read' onclick=clearbox() >
</html>