Native File System API로 텍스트 편집기 만들기
10513 단어 자바스크립트
Chromium 계열의 브라우저(Chrome, Edge 등)라면 대체로 움직이지만 브레이브 같다. http 서버를 세우지 않고, 로컬의 HTML 파일로서 열어도 움직인다.
주의점으로서는, 기존 파일을 덮어쓰기 보존을 하면 작성일이 보존한 시점이 되어 버린다.
html
<div id='filename'>名称未設定ファイル</div>
<textarea id='editor'></textarea>
<div>
<button id='open'>開く</button>
<button id='save'>上書き保存</button>
<button id='saveas'>名前をつけて保存</button>
</div>
css
#editor {
width: 320px;
height: 160px;
}
#filename {
color: #888888;
}
JS
const fileNameDiv = document.getElementById('filename')
let fileHandle
// テキストファイルだけ開けるようなオプション
const pickerOpts = {
types: [
{
description: 'Texts',
accept: {
'text/*': ['.txt', '.text']
}
}
],
multiple: false,
}
document.getElementById('open').onclick = async () => {
try {
[ fileHandle ] = await window.showOpenFilePicker(pickerOpts)
if (fileHandle.kind !== 'file') return
fileNameDiv.textContent = fileHandle.name
const fileData = await fileHandle.getFile()
const content = await fileData.text()
document.getElementById('editor').value = content
} catch (e) {
// ファイル選択をキャンセルした時などにここに飛ぶ
console.error(e)
}
}
document.getElementById('save').onclick = async () => {
if (fileHandle.kind !== 'file') return
const content = document.getElementById('editor').value
const writableStream = await fileHandle.createWritable()
await writableStream.write(content)
await writableStream.close()
}
document.getElementById('saveas').onclick = async () => {
try {
const content = document.getElementById('editor').value
fileHandle = await window.showSaveFilePicker(pickerOpts)
if (fileHandle.kind !== 'file') return
const writableStream = await fileHandle.createWritable()
await writableStream.write(content)
await writableStream.close()
fileNameDiv.textContent = fileHandle.name
} catch (e) {
console.error(e)
}
}
Reference
이 문제에 관하여(Native File System API로 텍스트 편집기 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yubais/items/b02d5d4f7a9edf4b0725텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)