您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Some minor tweaks to VivePort.com, to enable browsing to experiences while not losing your position in the search results (opening pages in new windows/tabs).
// ==UserScript== // @name VivePort new links // @namespace http://tampermonkey.net/ // @version 2025-06-06 // @description Some minor tweaks to VivePort.com, to enable browsing to experiences while not losing your position in the search results (opening pages in new windows/tabs). // @author Steve64B // @match https://www.viveport.com/filter-page* // @icon https://www.google.com/s2/favicons?sz=64&domain=viveport.com // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; // Function to create links for product cards function createLinks() { let productCards = document.querySelectorAll("div#productCard"); productCards.forEach(card => { // Check if the link has already been added if (!card.querySelector("a#customlink")) { let img = card.querySelector("img.card_image"); if (img) { let src = img.src; let basename = src.split('/').pop(); // Get the last part of the URL let id = basename.split('.')[0]; // Get the string before the first dot let link = document.createElement("a"); link.target = "_blank"; link.href = "https://www.viveport.com/apps/" + id; link.id = "customlink"; link.textContent = "Go to product page"; link.addEventListener("click", function (event) { event.stopPropagation(); // Prevent click event from bubbling }); card.appendChild(link); } else { console.warn("No image with class 'card_image' found in one of the productCards."); } } }); // Update all <p> elements with the 'chakra-text' class let textElements = document.querySelectorAll("p.chakra-text"); textElements.forEach(p => { p.setAttribute("title", p.textContent.trim()); }); } // Set up a MutationObserver to watch for changes in the DOM const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.type === "childList" || mutation.type === "subtree") { createLinks(); // Recreate links when the DOM changes } }); }); // Start observing the body for changes const config = { childList: true, subtree: true }; observer.observe(document.body, config); // Initial call to create links for already loaded content createLinks(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址