Direct link functionality for Google Drive
当前为
// ==UserScript==
// @name Google Drive Direct Links
// @version 0.7
// @description Direct link functionality for Google Drive
// @author Josh Bjelovuk
// @match *://drive.google.com/*
// @grant none
// @namespace https://gf.qytechs.cn/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 +'/'+ 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 +'/'+ fileName;
}
else
url = 'https://googledrive.com/host/'+ file.dataset.id;
window.open(url);
};
menu.insertBefore(clone, menu.children[8]);
break;
}
}
});
}
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址