您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Opens certain links in a private FF tab. Requires https://addons.mozilla.org/fr/firefox/addon/private-tab/?src=api
- // ==UserScript==
- // @name Private tabs for certain links
- // @description Opens certain links in a private FF tab. Requires https://addons.mozilla.org/fr/firefox/addon/private-tab/?src=api
- // @namespace http://userscripts.org/users/399688
- // @include /https?:\/\/(np\.|www\.)reddit.com\/.*/
- // @version 1.1.1
- // @grant GM_openInTab
- // ==/UserScript==
- /*
- Changelog:
- v2.0.0
- Allows choosing the mode of operation from either inclusive or exclusive site filtering.
- Inclusive = Only open these sites in private tabs
- Exclusive = Open all sites in private tabs excluding the ones you define
- v1.1.1
- MObile youtube m.youtube.com
- v1.1.0
- Clicking on elements in anchors work now
- v1.0.0
- Initial version for anchors
- */
- /**
- Do we want to INCLUDE only certain sites for privacy?
- Otherwise (false) every site is private EXCLUDING certain sites
- */
- var inclusiveScript = false;
- /**
- Site that should be included for privacy
- */
- var inclusiveRegexs = [
- /^https?:\/\/((www|m)\.)?(youtu\.?be)/
- ]
- /**
- Sites that should be EXCLUDED from privacy
- */
- var exclusiveRegexs = [
- /^javascript:.*/,
- /https?:\/\/(np\.|www\.)reddit.com\/.*/
- ]
- var openInBackground = false;
- /**
- Gets the first element in the heirarchy that has the given tagname
- */
- function getFirstParentOftag(element, tagName) {
- if (element.tagName == tagName) {
- return element;
- }
- var parent = element.parentElement;
- if (parent) {
- return getFirstParentOftag(parent, tagName);
- }
- return null;
- }
- /**
- First class function to call a method with given args on a future given object
- */
- function callWith(method, ...args) {
- return function (o) {
- var func = o[method];
- if (typeof func !== 'function') {
- message = method + ' is not a function';
- console.error(message + ' of ', o);
- throw new TypeError(message);
- }
- return func.apply(o, args);
- }
- }
- /**
- Should we open the page in a private tab?
- */
- function shouldPrivatise(href){
- if(inclusiveScript){
- return inclusiveRegexs.some(callWith('test', href));
- } else {
- return ! exclusiveRegexs.some(callWith('test', href));
- }
- }
- /**
- Opens the link in a private tab
- */
- function handler(event) {
- // Only left clicks
- if (event.button !== 0) {
- return;
- }
- // Our target might be wrapped in an <a>
- var firstA = getFirstParentOftag(event.target, 'A');
- if (!firstA) {
- return;
- }
- // Only ourlinks we wanna privatise
- var href = firstA.href;
- if (shouldPrivatise(href)) {
- var privateHref = 'private:' + href;
- GM_openInTab(privateHref, openInBackground);
- event.preventDefault();
- }
- }
- document.addEventListener('click', handler, true);