您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Copies the editor’s content to local storage before saving to allow recovery if something is lost in transit.
当前为
// ==UserScript== // @name [Deprecated] Kanka Backup to Local Storage // @namespace http://tampermonkey.net/ // @version 2 // @description Copies the editor’s content to local storage before saving to allow recovery if something is lost in transit. // @author Salvatos // @license MIT // @match https://app.kanka.io/* // @icon https://www.google.com/s2/favicons?domain=kanka.io // @run-at document-end // ==/UserScript== // Wait for Summernote to initialize $('#entry').on('summernote.init', function() { // Find the current entity’s ID (NOTE: DOES NOT WORK FOR NEW ENTITIES (/create)) const entryType = window.location.href.match(/posts/) ? "post" : "entry"; let entityID = ""; if (entryType == "entry") { entityID = window.location.href.match(/w\/([\w\d])+\/[a-z]+\/(\d+)/) ? window.location.href.match(/w\/([\w\d])+\/[a-z]+\/(\d+)/)[1] : "new"; } if (entryType == "post") { entityID = window.location.href.match(/posts\/(\d+)/) ? window.location.href.match(/posts\/(\d+)/)[1] : "new"; } if (entityID != "new") { var recoveryButton = ` <button type="button" id="recoveryButton" class="note-btn btn btn-default btn-sm" tabindex="-1" title="Recover previous state" aria-label="Recover previous state" data-original-title="Recover previous state"> <i class="fa-solid fa-clock-rotate-left"></i> </button> `; document.getElementsByClassName('note-toolbar')[0].insertAdjacentHTML("beforeend", recoveryButton); // Grab our button instance recoveryButton = document.getElementById('recoveryButton'); // Add click event to button (copy saved content to clipboard) recoveryButton.addEventListener('click', ()=>{ let savedState = ""; if (entryType == "entry") { savedState = JSON.parse( localStorage.getItem('kanka-recovery-entity-'+entityID) ); } if (entryType == "post") { savedState = JSON.parse( localStorage.getItem('kanka-recovery-post-'+entityID) ); } if (savedState && savedState.length > 0) { // Copy code to clipboard (no IE support) navigator.clipboard.writeText(savedState).then(function() { alert("Saved state copied to clipboard"); }, function() { alert("Failed to access the clipboard"); }); } else { alert("No saved state found for the current " + entryType + "."); } }); } // Add event to save button(s) document.getElementById('form-submit-main').addEventListener('click', ()=>{ var editorValue = ""; // Code editor if ($('#entry + div').hasClass('codeview')) { editorValue = $('#entry + div').find('.note-codable').val(); } // Visual editor else { editorValue = $('#entry').val(); } if (entryType == "entry") { localStorage.setItem('kanka-recovery-entity-'+entityID, JSON.stringify(editorValue)); } if (entryType == "post") { localStorage.setItem('kanka-recovery-post-'+entityID, JSON.stringify(editorValue)); } }); });
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址