您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Remove the target attribute from the links matching the given string.
- // ==UserScript==
- // @name Fix New-Window Links (Remove target Attribute)
- // @namespace https://github.com/theborg3of5/Userscripts/
- // @version 1.0
- // @description Remove the target attribute from the links matching the given string.
- // @author Gavin Borg
- // @require https://greasyfork.org/scripts/28536-gm-config/code/GM_config.js?version=184529
- // @match https://greasyfork.org/en/scripts/404695-fix-new-window-links-remove-target-attribute
- // @grant GM_registerMenuCommand
- // @grant GM_getValue
- // @grant GM_setValue
- // ==/UserScript==
- var config = GM_config;
- var maxNumSelectors = 5; // How many different selectors are configurable per site.
- (function() {
- 'use strict';
- var site = getMatchingSite();
- initConfig(site);
- var siteClean = cleanSite(site);
- for (var i = 1; i <= maxNumSelectors; i++) {
- "selector" + i
- var selector = config.get(getConfigField(i));
- if(selector) {
- fixLinksMatchingQuery(selector);
- }
- }
- })();
- function getMatchingSite() {
- // Get sites that user has chosen to include or match (because that's what hotkeys are keyed to, not direct URLs)
- var sites = GM_info.script.options.override.use_matches;
- sites.concat(GM_info.script.options.override.use_includes);
- // Find matching site
- var currentURL = window.location.href;
- for (var site of sites) {
- // Use a RegExp to determine which of the user's includes/matches is currently open, since we allow different hotkeys/anchors per each of those.
- var siteRegex = new RegExp(site.replace(/\*/g, "[^ ]*")); // Replace * wildcards with regex-style [^ ]* wildcards
- if (siteRegex.test(currentURL)) {
- return site; // First match always wins
- }
- }
- }
- function initConfig(site) {
- var siteClean = cleanSite(site);
- // Build the link selector fields
- var fields = {};
- for (var i = 1; i <= maxNumSelectors; i++) {
- fields[getConfigField(i)] = {
- label: "Selector to fix (jQuery-style) #" + i + ":",
- title: "The jQuery-style selector that defines the link element(s) that you want to fix.",
- type: "text"
- };
- }
- config.init({
- id: "FixNewWindowLinksConfig" + siteClean,
- title: "Fix New Window Links Config for: " + site,
- fields: fields,
- events: {
- 'save': function() { config.close(); }
- }
- });
- // Add a menu item to the menu to launch the config
- GM_registerMenuCommand("Configure links to fix for this site", () => {
- config.open();
- })
- }
- function cleanSite(site) {
- return site.replace(/[\*/:\?\.]/g, ""); // Drop */:?. characters from site for use in ID
- }
- function getConfigField(index) {
- return "selector" + index;
- }
- function fixLinksMatchingQuery(queryString) {
- if (document.querySelector(queryString)) { // Make sure the links we want to fix exist, in case they show up via AJAX a little later than page load.
- document.querySelectorAll(queryString).forEach(link => link.removeAttribute("target"));
- } else {
- setTimeout(fixLinksMatchingQuery.bind(null, queryString), 0);
- }
- }