超级方便的草稿管理工具
= 在浏览器中保存和管理草稿 =

草稿管理工具语言索引
 Japanese [日本語]  
 English [英語]  
 Korean [韓国語]  
 Simplified Chinese [简体中文]  
 Traditional Chinese [繁體中文]  
 Español [スペイン語]  
 Français [フランス語]  
 Português [ポルトガル語]  
 Deutsch [ドイツ語]  
 Italiano [イタリア語]  
 Russian [ロシア語]  
 Turkish [トルコ語]  
 Hindi [ヒンディー語]  
 Vietnamese [ベトナム語]  
 Thai [タイ語]  
 Dutch [オランダ語]  
 Indonesian [インドネシア語]  
 Malay [マレー語]  
 Filipino [フィリピン語]  
 Swedish [スウェーデン語]  
 Norwegian [ノルウェー語]  
 Danish [デンマーク語]  
 Finnish [フィンランド語]  
 Polish [ポーランド語]  
 Czech [チェコ語]  
 Hungarian [ハンガリー語]  
 Greek [ギリシャ語]  
 Romanian [ルーマニア語]  
 Tagalog [タガログ語]  
 Ukrainian [ウクライナ語]  
 Arabic [アラビア語]  
 草稿管理工具 HTML文件下载   
请下载文件并将其放在您的电脑上以供使用。
以下的“草稿管理工具”是演示版本。

《草稿管理工具》

这个“草稿管理工具”允许您使用浏览器简单而高效地创建和管理文本草稿。输入内容会自动保存,无需手动命名保存。保存时会自动添加时间戳,复制或导出草稿也非常简单。
输入的数据存储在用户浏览器的“本地存储”中,不会发送到服务器。数据仅保存在用户的设备上,确保隐私安全。
但是,请注意,如果电脑关机或重启,本地存储中的数据可能会丢失。即使关闭浏览器,数据仍然保留,但清除历史记录或缓存时可能会被删除。我们建议定期导出数据。
《 Draft Management Tool Demo 》
  • 您可以复制代码或下载使用。
  • 下面框中的代码主要为英文,但可以下载的“HTML文件”提供多种语言版本。
  • 请将其放置在桌面或电脑的其他位置以便使用。
  • 使用没有限制。请根据需要调整为您的环境。
《包含所有设置的完整HTML样本 [英文]》
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Draft Management Tool</title>
    <meta name="description" content="A tool that allows you to manage drafts in your browser, with features like copying, exporting, and adding timestamps. It saves you the hassle of naming and saving files compared to word processing software.">
    <meta name="author" content="Everyone's Knowledge: Handy Notes みんなの知識 ちょっと便利帳">
    <meta name="creation date" content="2024.09.01">
    <meta name="robots" content="NOINDEX,NOFOLLOW">
    <!-- Google Fonts CDN -->
    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;700&display=swap" rel="stylesheet">
    <style>
		body {font-family: "Noto Sans", Arial, Helvetica, sans-serif; margin: 0 0 0 5px;}
		.draft-form { margin-bottom: 5px; }
		label { display: block; margin-bottom: 5px; }
		input[type="text"], textarea { width: 98%; padding: 8px; margin-bottom: 10px; border: #666 1px solid ;border-radius: 4px; }
		button { padding: 10px 15px; margin-right: 5px; }
		.preview { padding: 10px; border: 1px solid #333; border-radius: 4px; background-color: #FAFAFA; margin-top: 10px; }
		.title-highlight { font-weight: bold; color: #333; }
		fieldset{margin: 0 0 20px 0; border: darkgray 2px solid; border-radius: 4px; }
		.bgcolor-01{background-color: lavenderblush; }
		.bgcolor-02{background-color: lightcyan; }
		.bgcolor-03{background-color: #E8FBE8; }
		.bgcolor-04{background-color: #FCFAFC; }
		.bgcolor-05{background-color: #F5FFFA; }
		/* Button Styles */
		button {
			background-color: #007bff; /* Blue background color */
			color: #fff; /* White text color */
			border: none;
			border-radius: 4px;
			padding: 3px 5px;
			font-size: 16px; /* Font size specification */
			cursor: pointer;
			margin: 5px 0;
			transition: background-color 0.3s ease; /* Hover animation */
		}
		button:hover {
			background-color: #0056b3; /* Background color on hover */
		}
		button[type="reset"] {
			background-color: #6c757d; /* Gray background color */
		}
		button[type="reset"]:hover {
			background-color: #5a6268; /* Background color on hover for reset button */
		} 
		/* Reset Button Styles */
		.reset-btn {
			background-color: #ff6b6b;
		}
		/* Explanation Title */
		.setysumei_title{
		font-weight: bold;
		}
		/* Explanation Body */
		.setysumei_honbun{
		margin: 0 0 0 20px;
		}
		legend{font-weight: bold}
    </style>
    <script>
        document.addEventListener('DOMContentLoaded', () => {
            const forms = document.querySelectorAll('.draft-form');
            
            forms.forEach((form, index) => {
                const titleField = form.querySelector(`input[name="title-${index + 1}"]`);
                const contentField = form.querySelector(`textarea[name="content-${index + 1}"]`);
                const previewDiv = form.querySelector('.preview');

                const timestampKey = `timestamp-${index + 1}`;

                // Restore field data from local storage
                titleField.value = localStorage.getItem(titleField.name) || '';
                contentField.value = localStorage.getItem(contentField.name) || '';
                const savedTimestamp = localStorage.getItem(timestampKey) || 'Not saved yet';

                // Save to local storage and update preview on each input
                [titleField, contentField].forEach(field => {
                    field.addEventListener('input', () => {
                        localStorage.setItem(field.name, field.value);
                        const timestamp = new Date().toLocaleString();
                        localStorage.setItem(timestampKey, timestamp);
                        adjustTextareaHeight(contentField);
                        updatePreview(timestamp);
                    });
                });

                // Clear local storage with the reset button
                form.querySelector('.reset-btn').addEventListener('click', () => {
                    [titleField, contentField].forEach(field => {
                        localStorage.removeItem(field.name);
                        field.value = '';
                        adjustTextareaHeight(contentField);
                    });
                    localStorage.removeItem(timestampKey);
                    updatePreview('Not saved yet');
                });

                // Copy function on click
                form.querySelector('.copy-btn').addEventListener('click', () => {
                    const content = contentField;
                    content.select();
                    document.execCommand('copy');
                    alert('Content copied!');
                });

                // Export function
                form.querySelector('.export-btn').addEventListener('click', () => {
                    const data = {
                        title: titleField.value,
                        content: contentField.value,
                        timestamp: localStorage.getItem(timestampKey) || new Date().toLocaleString()
                    };
                    const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' });
                    const url = URL.createObjectURL(blob);
                    const a = document.createElement('a');
                    a.href = url;
                    a.download = `draft-${index + 1}.json`;
                    a.click();
                });

                // Update the preview feature
                function updatePreview(timestamp) {
                    const title = titleField.value ? `《${titleField.value}》` : '';
                    const escapedContent = contentField.value
                        .replace(/&/g, '&amp;')
                        .replace(/</g, '&lt;')
                        .replace(/>/g, '&gt;')
                        .replace(/"/g, '&quot;')
                        .replace(/'/g, '&#39;')
                        .replace(/\n/g, '<br>');

                    previewDiv.innerHTML = `
                        <div class="title-highlight">${title}</div>
                        <p>${escapedContent}</p>
                        <small>Saved on: ${timestamp}</small>
                    `;
                }

                // Adjust the textarea height to match content
                function adjustTextareaHeight(textarea) {
                    textarea.style.height = 'auto';
                    textarea.style.height = textarea.scrollHeight + 'px';
                }

                // Adjust textarea height on page load
                adjustTextareaHeight(contentField);
                updatePreview(savedTimestamp);
            });
        });
    </script>
</head>
<body>
    <div align="center"><strong>《&thinsp;Draft Management Tool &thinsp;》</strong></div>
    <fieldset class="bgcolor-01">
	<legend>《&thinsp;Draft ①&thinsp;》</legend>
    <div class="draft-form">
        <label for="title-1">Title:</label>
        <input type="text" id="title-1" name="title-1" placeholder="Enter title">
        <label for="content-1">Content:</label>
        <textarea id="content-1" name="content-1" placeholder="Enter content"></textarea>
        <button type="button" class="copy-btn">Copy on click</button>
        <button type="button" class="export-btn">Export</button>     
        <button type="button" class="reset-btn">Reset</button>
        <div class="preview"></div>
    </div>
	</fieldset>

    <fieldset class="bgcolor-02">
	<legend>《&thinsp;Draft ②&thinsp;》</legend>
    <div class="draft-form">
        <label for="title-2">Title:</label>
        <input type="text" id="title-2" name="title-2" placeholder="Enter title">
        <label for="content-2">Content:</label>
        <textarea id="content-2" name="content-2" placeholder="Enter content"></textarea>
        <button type="button" class="copy-btn">Copy on click</button>
        <button type="button" class="export-btn">Export</button>
        <button type="button" class="reset-btn">Reset</button>
        <div class="preview"></div>
    </div>
	</fieldset>

	<fieldset class="bgcolor-03">
	<legend>《&thinsp;Draft ③&thinsp;》</legend>
    <div class="draft-form">
        <label for="title-3">Title:</label>
        <input type="text" id="title-3" name="title-3" placeholder="Enter title">
        <label for="content-3">Content:</label>
        <textarea id="content-3" name="content-3" placeholder="Enter content"></textarea>
        <button type="button" class="copy-btn">Copy on click</button>
        <button type="button" class="export-btn">Export</button>
        <button type="button" class="reset-btn">Reset</button>
        <div class="preview"></div>
    </div>
	</fieldset>

	<fieldset class="bgcolor-04">
	<legend>《&thinsp;Draft ④&thinsp;》</legend>
    <div class="draft-form">
        <label for="title-4">Title:</label>
        <input type="text" id="title-4" name="title-4" placeholder="Enter title">
        <label for="content-4">Content:</label>
        <textarea id="content-4" name="content-4" placeholder="Enter content"></textarea>
        <button type="button" class="copy-btn">Copy on click</button>
        <button type="button" class="export-btn">Export</button>
        <button type="button" class="reset-btn">Reset</button>
        <div class="preview"></div>
    </div>
	</fieldset>

	<fieldset class="bgcolor-05">
	<legend>《&thinsp;Draft ⑤&thinsp;》</legend>
    <div class="draft-form">
        <label for="title-5">Title:</label>
        <input type="text" id="title-5" name="title-5" placeholder="Enter title">
        <label for="content-5">Content:</label>
        <textarea id="content-5" name="content-5" placeholder="Enter content"></textarea>
        <button type="button" class="copy-btn">Copy on click</button>
        <button type="button" class="export-btn">Export</button>
        <button type="button" class="reset-btn">Reset</button>
        <div class="preview"></div>
    </div>
	</fieldset>

<fieldset>
	<legend><h3>《Specifications, Features, and Functions of the Draft Management Tool》</h3></legend>
	<div style="margin: 0 10px 10px">
	<div class="setysumei_title">① Location of Local Storage and Other Details</div>
	<div class="setysumei_honbun">The entered data is stored in the user's browser's "local storage." Local storage is a browser storage function with the following characteristics:</div>
	<ul>
	<li><strong>Browser-Specific</strong>: Local storage exists only within the specific browser in which the data was saved. It cannot be accessed from other browsers or devices.</li>
	<li><strong>Domain-Specific</strong>: The data is associated with the specific domain (site) where it was saved. It can be accessed from pages within the same domain but not from different domains.</li>
	<li><strong>Persistence</strong>: Data stored in local storage remains even after closing the browser, but it may be deleted if the computer is shut down or restarted. Be sure to back up important data using a text editor or other means. Also, note that data may not be saved in private mode (incognito mode).</li>
	</ul>
	<div class="setysumei_title">② Behavior on a Web Server</div>
	<div class="setysumei_honbun">When this HTML file is uploaded to a web server, the following behavior is expected:</div>
	<ul>
	<li><strong>Use by the Same User on the Same Browser:</strong></li>
	<ul>
	<li>When a user accesses this page, data is stored in the local storage of that user's browser.</li>
	<li>If the same user accesses the page again from the same browser, the previous input will be restored.</li>
	<li>Since local storage is saved on the client-side (the user's device), it cannot be accessed from other users or devices.</li>
	</ul>
	<li><strong>Use by Different Users or Different Browsers:</strong></li>
	<ul>
	<li>When a different user accesses the same web page, a new local storage is created in that user's browser, and the previous user's data cannot be accessed.</li>
	</ul>
	<li><strong>Data Security:</strong></li>
	<ul>
	<li>Since local storage is stored on the client-side, the data is not sent to the server. Therefore, the data is saved only on the user's device. Even when uploaded to a web server, the data is managed individually for each user, ensuring privacy.</li>
	</ul>
	</ul>
	<div class="setysumei_title">③ Features</div>
	<ul>
	<li><strong>Data Export Function:</strong> You can export saved data in JSON format for reuse.</li>
	<li><strong>Input Preview Function:</strong> You can preview the content you are entering in real-time, making it easier to confirm during editing.</li>
	<li><strong>Timestamp Function:</strong> The save date and time of each draft are recorded, allowing you to check the last edit time.</li>
	<li><strong>Copy Function:</strong> You can use a copy button to copy and utilize the input and saved content.</li>
	</ul>
	<div class="setysumei_title">《Summary》</div>
	<div class="setysumei_honbun">This tool uses local storage to save data, so even when uploaded to a web server, the data is not shared with other users. Each user retains their data only within their own browser, and it remains until it is reset. This feature can be used safely even on a web server and operates independently for each user.
	<br>This tool is designed to easily save and manage drafts using the browser's local storage. It eliminates the need to manually save with a name, allowing direct input and saving within the browser. Depending on how you use it, it can be more convenient and improve work efficiency compared to text editors or word processors.<br>
	<strong style="color: crimson">However, the data may be lost due to computer shutdowns or restarts, so please regularly export important data or save it using a text editor or word processor. This tool is intended to provide temporary storage for drafts only.</strong>
	</div>
	</div>
</fieldset>

</body>
</html>

おすすめサイト・関連サイト…

Last updated : 2024/09/06