您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Sets form's target to `_blank` when submitted while Control key is being pressed. Allow submit with middle mouse button.
- // ==UserScript==
- // @name Submit to Tab with Ctrl + Click / Ctrl + Enter / Middle click
- // @description Sets form's target to `_blank` when submitted while Control key is being pressed. Allow submit with middle mouse button.
- // @namespace http://eldar.cz/myf/
- // @license CC0
- // @version 2.2.0
- // @grant none
- // @include *
- // ==/UserScript==
- // https://greasyfork.org/en/scripts/9954/versions/new
- const controlKey = "Control";
- const middleMouseButton = 4;
- let isControlPressed = false;
- let formElement = null;
- let pressedButton = null;
- let originalTarget = '';
- window.addEventListener( 'submit', onSubmit, true );
- window.addEventListener( 'keydown', onKeydown, true );
- window.addEventListener( 'keyup', onKeyup, true );
- window.addEventListener( 'mousedown', onMousedown, true );
- window.addEventListener( 'mouseup', onMouseup, true );
- window.addEventListener( 'blur', onBlur, false );
- function onSubmit ( event ) {
- if ( isControlPressed === true && formElement === null ) {
- formElement = event.target;
- originalTarget = formElement.target;
- formElement.target = '_blank';
- }
- }
- function onKeydown ( event ) {
- if ( event.key === controlKey ) {
- isControlPressed = true;
- }
- }
- function onKeyup ( event ) {
- if ( event.key === controlKey ) {
- isControlPressed = false;
- if ( formElement !== null ) {
- formElement.target = originalTarget;
- formElement = null;
- originalTarget = '';
- }
- }
- }
- function onMousedown ( event ) {
- if ( event.buttons === middleMouseButton ) {
- if ( event.target?.type === 'submit' ) {
- pressedButton = event.target;
- }
- }
- }
- function onMouseup ( event ) {
- if ( pressedButton === event.target ) {
- let _origTarget = pressedButton.form.target;
- pressedButton.form.target = '_blank';
- pressedButton.form.dispatchEvent(
- new SubmitEvent("submit", { submitter: pressedButton })
- );
- pressedButton.form.target = _origTarget;
- }
- pressedButton = null;
- }
- function onBlur ( event ) {
- onKeyup( { key: controlKey } );
- }