您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Find and add a download button for PDFs on webpages, including embedded PDFs in iframes.
当前为
- // ==UserScript==
- // @name PDF Finder and Downloader
- // @version 1.1
- // @description Find and add a download button for PDFs on webpages, including embedded PDFs in iframes.
- // @license MIT
- // @match *://*/*
- // @grant none
- // @namespace pdf downloader
- // ==/UserScript==
- (function() {
- 'use strict';
- // Function to check if a link ends with .pdf
- function isPDFLink(link) {
- return link.toLowerCase().endsWith('.pdf');
- }
- // Function to add a download button next to a PDF link
- function addDownloadButton(element, pdfLink) {
- const downloadButton = document.createElement('button');
- downloadButton.innerText = 'PDF ⬇️';
- downloadButton.style.backgroundColor = 'violet'; // Change color to violet
- downloadButton.style.color = 'white';
- downloadButton.style.border = 'none';
- downloadButton.style.padding = '5px 10px';
- downloadButton.style.marginLeft = '5px';
- downloadButton.style.cursor = 'pointer';
- downloadButton.addEventListener('click', function(event) {
- event.preventDefault();
- window.open(pdfLink, '_blank');
- });
- // Insert the download button next to the PDF link or iframe
- element.parentNode.insertBefore(downloadButton, element.nextSibling);
- // Add circular button beside the PDF ⬇️ button
- addCircularButton(downloadButton);
- }
- // Function to add a circular button beside the PDF ⬇️ button
- function addCircularButton(downloadButton) {
- const circularButton = document.createElement('button');
- circularButton.innerText = '-';
- circularButton.style.backgroundColor = 'green'; // Set color to green
- circularButton.style.color = 'white';
- circularButton.style.border = 'none';
- circularButton.style.borderRadius = '50%'; // Make it circular
- circularButton.style.width = '20px';
- circularButton.style.height = '20px';
- circularButton.style.marginLeft = '5px';
- circularButton.style.cursor = 'pointer';
- // Add click event listener to exclude the website
- circularButton.addEventListener('click', function(event) {
- event.preventDefault();
- excludeWebsiteFromScript();
- });
- // Insert the circular button next to the PDF ⬇️ button
- downloadButton.parentNode.insertBefore(circularButton, downloadButton.nextSibling);
- }
- // Function to exclude the current website from running the script
- function excludeWebsiteFromScript() {
- const currentUrl = window.location.href;
- let excludedSites = JSON.parse(localStorage.getItem('excludedSites')) || [];
- if (!excludedSites.includes(currentUrl)) {
- excludedSites.push(currentUrl);
- localStorage.setItem('excludedSites', JSON.stringify(excludedSites));
- }
- }
- // Function to check if the current website should be excluded from running the script
- function shouldExcludeWebsite() {
- const currentUrl = window.location.href;
- const excludedSites = JSON.parse(localStorage.getItem('excludedSites')) || [];
- return excludedSites.includes(currentUrl);
- }
- // Function to find PDF links on the page and add download buttons
- function findAndAddPDFDownloadButtons() {
- if (!shouldExcludeWebsite()) {
- const links = document.querySelectorAll('a, iframe');
- links.forEach(link => {
- let pdfLink;
- if (link.tagName.toLowerCase() === 'iframe') {
- const dataSource = link.getAttribute('data-source');
- if (dataSource) {
- pdfLink = getPDFLinkFromDataSource(dataSource);
- }
- } else if (isPDFLink(link.href)) {
- pdfLink = link.href;
- }
- if (pdfLink) {
- addDownloadButton(link, pdfLink);
- }
- });
- }
- }
- // Function to extract PDF link from data-source attribute
- function getPDFLinkFromDataSource(dataSource) {
- const match = dataSource.match(/file=([^&]+)/);
- if (match && match[1]) {
- return decodeURIComponent(match[1]);
- }
- return null;
- }
- // Run the function when the page is fully loaded
- window.addEventListener('load', findAndAddPDFDownloadButtons);
- })();