您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a 1-Click Delete & Archive Buttons for entries
// ==UserScript== // @name 1Password 1-click archive & delete // @namespace http://tampermonkey.net/ // @version 2.0 // @description Adds a 1-Click Delete & Archive Buttons for entries // @namespace https://greasyfork.runtimutd.eu.org/en/users/807108-jeremy-r // @author JRem // @match https://*.1password.com/vaults/*/*/* // @icon https://www.google.com/s2/favicons?sz=64&domain=1password.com // @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js // @require https://greasyfork.runtimutd.eu.org/scripts/383527-wait-for-key-elements/code/Wait_for_key_elements.js?version=701631 // @grant GM_addStyle // @license MIT // ==/UserScript== (function() { // Customizable timeout for re-adding buttons after use const timeout = "1500"; // Wait for the buttons to be visible before starting waitForKeyElements ( "#item-details", addBtn ); waitForKeyElements ( "#top-bar-notifications", topBtn ); // CSS Style to put both of the new buttons on the same line var css = '.clickarchive {margin-left:3px!important;}'; css += 'div#divdelarc {display: inline-flex !important;margin-left: 0px !important;align-content: center !important;}'; css += '#topdiv {display: inline-flex !important;}'; GM_addStyle(css); function topBtn() { var tdparent = document.querySelector('div[id="title-container"]'); var topdiv = document.createElement("div"); topdiv.id = "topdiv"; tdparent.appendChild(topdiv); var topbtn = document.createElement("button"); topbtn.innerHTML = "Add Buttons"; topbtn.className= "item-detail-button clickadd"; topbtn.id= "clickadd"; topbtn.style.background = "red"; topbtn.onclick= function(){ addBtn(); } var div1=document.querySelector('div[id="topdiv"]'); div1.appendChild(topbtn); } // Function to add buttons function addBtn() { // Define Delete Button var delbtn = document.createElement("button"); delbtn.innerHTML = "Delete"; delbtn.className= "item-detail-button clickdelete"; delbtn.id= "clickdelete"; delbtn.style.background = "red"; delbtn.onclick= function(){ document.querySelector('button[data-testid="toolbar-edit"]').click(); document.querySelector('button[data-testid="toolbar-delete"]').click(); document.querySelector('button[id="submit"]').click(); // When the buttons are used, the page gets reloaded, however since its using websocket it cant re-add the buttons without help // This just tells it to re-add the button 1.5 seconds after it has been clicked. // If the buttons are not visible after being used, increase the timeout var at the top setTimeout(function(){ addBtn(); }, timeout); } var div = document.querySelector('button[class="item-detail-button"]'); // Define new DIV to put buttons in var newdiv = document.createElement("div"); newdiv.id = "divdelarc"; // Append DIV to page div.parentElement.appendChild(newdiv); // Add Delete button newdiv.appendChild(delbtn); // Define Archive button var archivebtn = document.createElement("button"); archivebtn.innerHTML = "Archive"; archivebtn.className= "item-detail-button clickarchive"; archivebtn.id= "clickarchive"; archivebtn.style.background = "red"; archivebtn.onclick= function(){ document.querySelector('button[data-testid="toolbar-edit"]').click(); document.querySelector('button[data-testid="toolbar-archive"]').click(); document.querySelector('button[id="archive-selected-item"]').click(); // When the buttons are used, the page gets reloaded, however since its using websocket it cant re-add the buttons without help // This just tells it to re-add the button 1.5 seconds after it has been clicked. // If the buttons are not visible after being used, increase the timeout var at the top setTimeout(function(){ addBtn(); }, timeout); } // Add Archive button to page newdiv.appendChild(archivebtn); } })();