您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a button to download VS Code extensions directly from the marketplace.
当前为
- // ==UserScript==
- // @name VS Code Extension Downloader
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description Adds a button to download VS Code extensions directly from the marketplace.
- // @author You
- // @match https://marketplace.visualstudio.com/items*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- // Function to check if it's an extension details page (basic check)
- if (!document.querySelector(".ux-item-name")) {
- return;
- }
- // Delay execution to allow page to load
- setTimeout(getExtensionInfoAndInsertButton, 1000); // 1-second delay
- function getExtensionInfoAndInsertButton() {
- const url = new URL(window.location.href);
- const identifier = url.searchParams.get('itemName');
- if (!identifier) {
- console.error("Could not find extension identifier in the URL.");
- return;
- }
- const publisher = identifier.split('.')[0];
- const extensionName = identifier.split('.')[1];
- // Extract version from the specified table cell (more robust selector)
- const versionElement = document.querySelector('td[role="definition"][aria-labelledby^="version"]');
- const version = versionElement ? versionElement.textContent.trim() : "";
- if (!version) {
- console.warn("Could not find extension version. Using an empty string.");
- }
- const extensionInfo = {
- version: version,
- publisher: publisher,
- extensionName: extensionName, // Store extension name separately
- identifier: identifier,
- getDownloadUrl: function() {
- return `https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${this.publisher}/vsextensions/${this.extensionName}/${this.version}/vspackage`;
- },
- getFileName: function() {
- return [this.identifier, "_", this.version, ".vsix"].join("");
- },
- getDownloadButton: function() {
- const button = document.createElement("a");
- button.innerHTML = "Download VSIX";
- button.href = "javascript:void(0);";
- button.style.fontFamily = "wf_segoe-ui,Helvetica Neue,Helvetica,Arial,Verdana";
- button.style.display = "inline-block";
- button.style.padding = "2px 5px";
- button.style.background = "darkgreen";
- button.style.color = "white";
- button.style.fontWeight = "bold";
- button.style.margin = "2px 5px";
- button.setAttribute("data-url", this.getDownloadUrl());
- button.setAttribute("data-filename", this.getFileName());
- button.onclick = function(event) {
- event.preventDefault(); // Prevent the default action
- const downloadUrl = this.getAttribute("data-url");
- window.open(downloadUrl, '_blank'); // Open in a new tab
- };
- return button;
- }
- };
- const installButtonContainer = document.querySelector(".installButtonContainer");
- if (installButtonContainer) {
- installButtonContainer.parentNode.insertBefore(extensionInfo.getDownloadButton(), installButtonContainer);
- } else {
- console.error("Could not find install button container.");
- }
- }
- })();