Alat Manajemen Draf Super Praktis
= Simpan dan Kelola Draf di Browser Anda =

Indeks Bahasa Alat Manajemen Draf
 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 [アラビア語]  
 Unduh File HTML Alat Manajemen Draf   
Harap unduh file dan letakkan di komputer Anda sendiri untuk digunakan.
"Alat Manajemen Draf" di bawah ini adalah demonstrasi.

《Alat Manajemen Draf》

Alat "Manajemen Draf" ini memungkinkan Anda untuk membuat dan mengelola draf teks dengan mudah dan efisien menggunakan browser Anda. Input Anda disimpan secara otomatis, menghilangkan kebutuhan untuk menyimpan dengan nama secara manual. Stempel waktu ditambahkan secara otomatis saat penyimpanan, dan menyalin atau mengekspor draf Anda juga mudah.
Data yang dimasukkan disimpan di "penyimpanan lokal" browser pengguna dan tidak dikirim ke server. Data hanya disimpan di perangkat pengguna, menjamin privasi.
Namun, harap diperhatikan bahwa data di penyimpanan lokal dapat hilang jika komputer dimatikan atau di-restart. Data tetap ada meskipun browser ditutup, tetapi dapat dihapus jika riwayat atau cache dibersihkan. Kami merekomendasikan untuk mengekspor secara teratur.
《 Draft Management Tool Demo 》
  • Anda dapat menyalin kode atau mengunduh dan menggunakannya.
  • Kode di kotak di bawah ini sebagian besar dalam bahasa Inggris, tetapi file yang dapat diunduh sebagai "File HTML" tersedia dalam beberapa bahasa.
  • Letakkan di desktop Anda atau di tempat lain di komputer Anda untuk digunakan.
  • Tidak ada batasan penggunaan. Sesuaikan dengan lingkungan Anda sesuai kebutuhan.
《Contoh HTML Lengkap dengan Semua Pengaturan [Bahasa Inggris]》
<!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