您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Direct link functionality for Google Drive
当前为
// ==UserScript== // @name Google Drive Direct Links // @version 0.8 // @description Direct link functionality for Google Drive // @author Josh Bjelovuk // @match *://drive.google.com/* // @grant none // @namespace https://greasyfork.org/users/11679 // ==/UserScript== var isSharedFolder = false; var observer = new MutationObserver(function(mutations) { var navContainer = document.getElementsByClassName('a-R-K-Ro')[0]; var navBars = navContainer.getElementsByClassName('a-pa-ob-Ff'); for (var i = 1; i < navBars.length; i++) { if (navBars[i].style.display !== 'none') { var shared = navBars[i].getElementsByClassName('O-Ka-I-e')[0]; if (shared && shared.getAttribute('aria-label')) isSharedFolder = true; else isSharedFolder = false; break; } } mutations.forEach(function(mutation) { for (var i = 0; i < mutation.addedNodes.length; i++) { var node = mutation.addedNodes[i]; if (node.dataset.target === 'linkBubble') { var link = node.getElementsByTagName('input')[0]; var directLink = link.cloneNode(true); if (isSharedFolder) { var folderId = location.href.slice(location.href.lastIndexOf('/') + 1); var file = node.previousSibling; var fileName = (file.getElementsByClassName('k-v-M')[0] || file.getElementsByClassName('k-u-P-M')[0]).getAttribute('aria-label'); directLink.value = 'https://googledrive.com/host/'+ folderId +'/'+ encodeURIComponent(fileName); } else directLink.value = 'https://googledrive.com/host/'+ node.previousSibling.dataset.id; directLink.onclick = function() { this.select(); }; var label = document.createElement('p'); label.style.cssText = "margin-top: 10px; margin-bottom: 10px;" label.textContent = 'Direct link:'; link.parentNode.insertBefore(directLink, link.nextSibling); link.parentNode.insertBefore(label, link.nextSibling); break; } else setClickEvent(node); } }); }); var content = document.getElementById('drive_main_page'); if (content) observer.observe(content, { childList: true, subtree: true }); function setClickEvent(elem) { if (elem.classList && (elem.classList.contains('a-v-hc-m') || elem.classList.contains('k-ji-ae'))) elem.addEventListener('contextmenu', adjustMenu); else { for (var i = 0; i < elem.children.length; i++) setClickEvent(elem.children[i]); } } function adjustMenu() { var file = this; setTimeout(function() { var menus = document.getElementsByClassName('j-A'); for (var i = 0; i < menus.length; i++) { var menu = menus[i]; if (menu.style.display !== 'none') { var existing = document.getElementById('DLID'); if (existing) existing.remove(); var clone = menu.children[7].cloneNode(true); clone.id = 'DLID'; clone.getElementsByClassName('a-D-P')[0].innerHTML = 'Open direct'; clone.onmouseleave = clone.onmouseenter = function() { this.classList.toggle('j-D-pc'); }; clone.onclick = function() { var url; if (isSharedFolder) { var folderId = location.href.slice(location.href.lastIndexOf('/') + 1); var fileName = (file.getElementsByClassName('k-v-M')[0] || file.getElementsByClassName('k-u-P-M')[0]).getAttribute('aria-label'); url = 'https://googledrive.com/host/'+ folderId +'/'+ encodeURIComponent(fileName); } else url = 'https://googledrive.com/host/'+ file.dataset.id; window.open(url); }; menu.insertBefore(clone, menu.children[8]); break; } } }); }