[英]How to get saved data from html file?
我在 html 文件中保存了一些数据,如下所示:
<head>
<script type="text/javascript" src="app.js"></script>
</head>
<body>
<script type="text/javascript">
document.__data = {
id: 1,
text: 'Test blob',
};
</script>
</body>
数据本地保存在data.html
文件中。
现在,我正在尝试将数据加载到单独的app.js
文件中:
我最初尝试直接访问document
:
const getData = () => console.log(document.__data);
但是那个 jsut 返回undefined
,所以我尝试了以下操作:
// app.js
const getData = async () => {
const request = await fetch('./data.html');
const data = await request.json();
console.log(JSON.stringify(data));
}
getData();
但这只会返回以下错误:
Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
知道如何 go 关于这个吗?
首先,不建议向document
添加自定义的任意属性,如下所示:
document.__data = { ... };
而是做类似的事情
var data = { ... };
现在,假设您想使用外部app.js
文件访问内联数据,该文件需要在您的内联文件之后加载,否则它将返回undefined
。
这就是它在 HTML 中需要的样子:
<head>
</head>
<body>
<script>
var data = {
id: 1,
text: 'Test blob',
};
</script>
<script src="app.js"></script>
</body>
还有你的app.js
const getData = () => console.log(data);
getData();
如果你的外部app.js
在head
中加载,就像你原来的 HTML 一样,你需要延迟getData()
直到 DOM 准备好,这就是它在你的app.js
中的样子:
const getData = () => console.log(data);
window.addEventListener('DOMContentLoaded', (event) => {
getData();
});
原因很简单,您无法访问文档中稍后出现的内容,因为它尚未加载,因此在您的第一个示例中存在undefined
的问题。
下面的两个片段使用内联脚本,因此您可以看到它是如何工作的。 只需将getData()
部分替换为您的app.js
。
当DOMContentLoaded
完成时显示它确实有效。
<head> <script> const getData = () => console.log(data); window.addEventListener('DOMContentLoaded', (event) => { getData(); }); </script> </head> <body> <script> var data = { id: 1, text: 'Test blob', }; </script> </body>
在 DOM 完成之前不延迟显示它不起作用
<head> <script> const getData = () => console.log(data); getData(); </script> </head> <body> <script> var data = { id: 1, text: 'Test blob', }; </script> </body>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.