HTMLダイアログ無効化

JavaScriptによるリンクを新しいウィンドウではなく新しいタブで開く / Always opens JavaScript links in new tab in current window instead of new window.

目前为 2014-09-09 提交的版本。查看 最新版本

// ==UserScript==
// @name        HTMLダイアログ無効化
// @version     2.2.1
// @namespace   http://userscripts.org/users/347021
// @id          block-new-window-347021
// @description JavaScriptによるリンクを新しいウィンドウではなく新しいタブで開く / Always opens JavaScript links in new tab in current window instead of new window.
// @include     *
// @grant       none
// @run-at      document-start
// @icon        data:image/vnd.microsoft.icon;base64,AAABAAEAICAQAAEABACkAgAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAmtJREFUWIXFV7uS0zAUPU682Em0Q0lJwzfQUvELW2zHzD4GhtkPoOcPttnZD2GGhp6CYn8jW2Aix3KIIwr7Xl/LsomdhZyZjCTb0jnn3ivZCXAEXF1fcn9yDAESoXvh9u7eDl3k4/Vl8CQCbu/u7Yerd2PWsWNFtCIAABudjllrFLwCikjtvcA0108vYJprJCbD83jW24aIsYhHpx+AZxdsdMokqbGdbYgYW5iDyIEqArLyi0ghNBaJyQAAScWRGCBEzNfLKIDHQ3fPw4/vABBwCi7Oz1BECjpZVsrixoQtDLYw7JxSsIXBxfnZINcAcFMKqGsgMRlCY6G1hlIKP/UjlFI8phYA90kQRWFfSHMsQGsNQIt+V9u8RuNhqOewgC9fv41Y6HCwgJev3/xX4ge3Bt6+etF6qIgUprnmVgcKQbaCnZ0iyFYAAD1pH1ppvvOSrnNb3a83DAvoOv2KSCHbAAjK+3Z2yq1cSBIvogn313l7dy6i+vDqfR1nm7o/eyaJ/MRd4+Y925i/9/fA46oO3yIKGotIxwSf8/LZ5tHtFSCdU19OlOQy7H3E5NyNXutllG3KcEsRPmIid93Po4BFuGLIxFL/JQUkwiVWu/ahI4uNfvOKKHWq3hcBFuA6dsdpbqEnigmla0lKY1+tEOYnHgG+sPsm+yDDTugiX/8ufy0BvpyrnRbhqx1T7n25dsPuEkv3QMcXEU/2nHKE5a9ikPP5Sds9sOc54Kt2wL/lutLmc98S4FapG/YuUt9cSdwHFkBVK+G6dqvdzTfNJ1JyLccuuAY+f3rfL/UfgQQc9m19AI7+5/ToAv4AYk+4QlI5O3QAAAAASUVORK5CYII=
// @author      100の人
// @homepage    https://gf.qytechs.cn/ja/scripts/271-html%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E7%84%A1%E5%8A%B9%E5%8C%96
// @license     Creative Commons Attribution 4.0 International Public License; http://creativecommons.org/licenses/by/4.0/
// ==/UserScript==

(function(){
'use strict';

try {
	window.open = new Proxy(window.open, {
		apply: function (open, windowInstance, argumentList) {
			if (2 in argumentList) {
				argumentList[2] = '';
			}
			return open.apply(windowInstance, argumentList);
		},
	});

	window.showModalDialog = new Proxy(window.showModalDialog, {
		apply: function (showModalDialog, windowInstance, argumentList) {
			if (argumentList.length === 0) {
				throw new TypeError('Not enough arguments to Window.showModalDialog.');
			}

			var warningMessage;
			switch (window.navigator.language) {
				case 'an':
					warningMessage = 'L\'uso de window.showModalDialog() ye obsoleto. Faiga servir en cuenta window.open(). Ta saber-ne mas, consulte https://developer.mozilla.org/en-US/docs/Web/API/Window.open .';
					break;
				case 'as':
					warningMessage = 'window.showModalDialog() ৰ ব্যৱহাৰ স্খলিত হৈছে। ইয়াৰ পৰিৱৰ্তে window.open() ব্যৱহাৰ কৰক। অধিক সহায়ৰ বাবে https://developer.mozilla.org/en-US/docs/Web/API/Window.open চাওক';
					break;
				case 'ast':
					warningMessage = 'L\'usu de window.showModalDialog() ta desaprobáu. Usa window.open() en so llugar. Pa más ayuda, https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'be':
					warningMessage = 'Ужыванне window.showModalDialog() асуджана. Скарыстайце window.open() замест. Больш падрабязныя звесткі на https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'bg':
					warningMessage = 'Употребата на window.showModalDialog() е остаряла. Вместо това използвайте window.open(). За повече информация https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'bn-BD':
					warningMessage = 'window.showModalDialog() এর ব্যবহার অসমর্থিত হয়েছে। পরিবর্তে window.open() ব্যবহার করুন। আরো সহায়তার জন্য https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'bn-IN':
					warningMessage = 'window.showModalDialog() এর ব্যবহার অবচিত হয়েছে | পরিবর্তে window.open() ব্যবহার করুন।অধিক সহায়তার জন্য https://developer.mozilla.org/en-US/docs/Web/API/Window.open পড়ুন।';
					break;
				case 'br':
					warningMessage = 'Diamzeret eo arver eus window.showModalDialog(). Arverit window.open() en e lec\'h. Gweladennit https://developer.mozilla.org/en-US/docs/Web/API/Window.open evit kaout muioc\'h a ditouroù.';
					break;
				case 'ca':
					warningMessage = 'window.showModalDialog() està en desús. Utilitzeu window.open(). Per a més ajuda, visiteu https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'cs':
					warningMessage = 'Použití window.showModalDialog() je zastaralé. Používejte raději window.open(). Více informací na https://developer.mozilla.org/en-US/docs/Web/API/Window.open  ';
					break;
				case 'cy':
					warningMessage = 'Mae\'r defnydd o window.showModalDialog() yn anghymeradwy. Defnyddiwch window.open() yn lle hynny. Am gymorth pellach https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'da':
					warningMessage = 'Brug af window.showModalDialog() er forældet. Brug i stedet window.open(). Læs mere på https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'de':
					warningMessage = 'Window.showModalDialog() sollte nicht mehr verwendet werden. Verwenden Sie window.open() stattdessen. Weitere Hilfe finden Sie unter https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'dsb':
					warningMessage = 'Wužywanje window.showModalDialog() jo zestarjone. Wužyjśo window.open() město togo. Za dalšnu pomoc glejśo https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'es-AR':
					warningMessage = 'El uso de window.showModalDialog() es obsoleto. Use window.open() en su lugar. Para más ayuda https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'es-CL':
					warningMessage = 'El uso de window.showModalDialog() está desaprobado. Use en su lugar window.open(). Para más ayuda https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'es-ES':
					warningMessage = 'El uso de window.showModalDialog() está desaprobado. Use window.open() en su lugar. Para más ayuda, https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'es-MX':
					warningMessage = 'El uso de window.showModalDialog() es obsoleto. Usa window.open() en su lugar. Para más ayuda visita https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'eu':
					warningMessage = 'Zaharkituta dago window.showModalDialog() erabiltzea. Honen ordez, erabili window.open(). Laguntza gehiagorako: https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'ff':
					warningMessage = 'Huutoraade  window.showModalDialog() natti. Huutoro Use window.open(). Ngam ɓeyditoraade ballal https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'fr':
					warningMessage = 'L\'utilisation de « window.showModalDialog() » est obsolète. Utiliser « window.open() » à la place. Consulter https://developer.mozilla.org/en-US/docs/Web/API/Window.open pour plus d\'informations.';
					break;
				case 'fy-NL':
					warningMessage = 'Gebrûk fan window.showModalDialog() wurdt net mear stipe. Gebrûk yn ste dêrfan window.open(). Sjoch https://developer.mozilla.org/en-US/docs/Web/API/Window.open voor meer informatie';
					break;
				case 'hr':
					warningMessage = 'Upotreba window.showModalDialog() je zastarjela. Koristite window.open(). Za pomoć posjetite https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'hsb':
					warningMessage = 'Wužiwanje window.showModalDialog() je zestarjene. Wužijće window.open() město toho. Za dalšu pomoc hlej https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'hu':
					warningMessage = 'A window.showModalDialog() használata elavult. Használja inkább a window.open() metódust. További segítség: https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'hy-AM':
					warningMessage = 'window.showModalDialog()-ի օգտագործումը չի խրախուսվում: Փոխարենը օգտագործեք window.open()-ը: Մանրամասները՝ https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'id':
					warningMessage = 'Penggunan window.showModalDialog() tidak disarankan lagi. Gunakan window.open(). Untuk bantuan kunjungi https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'is':
					warningMessage = 'Notkun á window.showModalDialog() er úreld. Notaðu window.open() í staðinn. Fyrir meiri upplýsingar https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'it':
					warningMessage = 'L’utilizzo di window.showModalDialog() è deprecato. Al suo posto utilizzare window.open(). Per ulteriori informazioni consultare https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'ja':
				case 'ja-JP':
				case 'ja-JP-mac':
					warningMessage = 'window.showModalDialog() の使用は推奨されません。代わりに window.open() を使用してください。詳しくは https://developer.mozilla.org/en-US/docs/Web/API/Window.open を参照してください。';
					break;
				case 'kk':
					warningMessage = 'Window.showModalDialog() қолдану ескірген. Оның орнына window.open() қолданыңыз. Көбірек білу үшін https://developer.mozilla.org/en-US/docs/Web/API/Window.open ';
					break;
				case 'km':
					warningMessage = 'ការ​ប្រើ window.showModalDialog() ត្រូវ​បាន​បដិសេធ។ ប្រើ window.open() ជំនួស។ ឧទាហរណ៍​ជំនួយ https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'ko':
					warningMessage = 'window.showModalDialog()는 더이상 사용하지 않습니다. 대신 window.open()를 사용해 주십시오. 더 자세한 사항은 https://developer.mozilla.org/en-US/docs/Web/API/Window.open 를 참고해 주십시오.';
					break;
				case 'lij':
					warningMessage = 'L\'ûzo de window.showModalDialog() o l\'é deprecòu. Dêuvia in càngio window.open(). Pe avéi âtre informaçioìn amîa https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'lt':
					warningMessage = 'Metodas „window.showModalDialog()“ yra nenaudotinas. Vietoje jo nudokite „window.open()“. Daugiau informacijos – https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'lv':
					warningMessage = 'window.showModalDialog() izmantošana ir novecojusi.  Izmantojiet window.open(). Papildus informācija https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'ml':
					warningMessage = 'ജാലകത്തിന്റെ ഉപയോഗം.showModalDialog() ഒഴിവാക്കി. ജാലകം ഉപയോഗിക്കുക. തുറക്കുക() പകരം. കൂടുതൽ സഹായത്തിനു https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'ms':
					warningMessage = 'Penggunaan window.showModalDialog() adalah usang. Sebaliknya gunakan window.open(). Untuk bantuan lanjut https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'nb-NO':
					warningMessage = 'Bruk av window.showModalDialog() er frarådet. Bruk window.open() isteden. For mer hjelp les https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'nl':
					warningMessage = 'Gebruik van window.showModalDialog() wordt niet meer ondersteund. Gebruik in plaats daarvan window.open(). Zie https://developer.mozilla.org/en-US/docs/Web/API/Window.open voor meer informatie';
					break;
				case 'nn-NO':
					warningMessage = 'Bruk av window.showModalDialog() er frarådd. Bruk window.open() i staden. For meir hjelp les https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'or':
					warningMessage = 'window.showModalDialog() ର ବ୍ୟବହାର ପୁରୁଣା ହୋଇଛି। ଏହା ପରିବର୍ତ୍ତେ window.open() କୁ ବ୍ୟବହାର କରନ୍ତୁ।ଅଧିକ ସହାୟତା ପାଇଁ https://developer.mozilla.org/en-US/docs/Web/API/Window.open କୁ ଦେଖନ୍ତୁ';
					break;
				case 'pl':
					warningMessage = 'Metoda „window.showModalDialog()” jest przestarzała. Zamiast niej należy używać metody „window.open()”. Więcej informacji: https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'pt-BR':
					warningMessage = 'window.showModalDialog() não deve mais ser usado. No lugar, use window.open(). Mais informações em https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'pt-PT':
					warningMessage = 'O uso de window.showModalDialog() está obsoleto. Em alternativa use window.open(). Para mais ajuda https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'rm':
					warningMessage = 'window.showModalDialog() na duess betg pli vegnir utilisà, utilisescha empè window.open(). Per ulteriur agid https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'ru':
					warningMessage = 'Метод window.showModalDialog() является устаревшим. Для его замены используйте метод window.open(). Более подробная информация доступна на https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'sk':
					warningMessage = 'Používanie window.showModalDialog() je zavrhnuté. Používajte radšej window.open(). Ďalšie informácie na stránke https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'sl':
					warningMessage = 'Uporaba window.showModalDialog() je zastarela. Uporabite window.open(). Za več informacij si oglejte https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'sq':
					warningMessage = 'Përdorimi i window.showModalDialog() është i vjetruar. Në vend të tij përdorni window.open(). Për më tepër ndihmë shihni https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'sr':
					warningMessage = 'Коришћење window.showModalDialog() је застарело. Користите window.open(). За помоћ https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'sv-SE':
					warningMessage = 'Bruket av window.showModalDialog() är förlegat. Använd window.open() i stället. För mer hjälp, se https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'ta':
					warningMessage = 'window.showModalDialog() ஐ பயன்படுத்துவது வழக்கொழிந்தது.மாற்றாக window.open()ஐ பயன்படுத்தவும். மேலும் உதவிக்கு https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'te':
					warningMessage = 'window.showModalDialog() వినియోగం ఆపబడింది. బదులుగా window.open() ఉపయోగించు. మరింత సహాయం కొరకు https://developer.mozilla.org/en-US/docs/Web/API/Window.open చూడండి.';
					break;
				case 'tr':
					warningMessage = 'indow.showModalDialog() kullanımı eskidi. Onun yerine window.open() kullanın. Daha fazla bilgi için: https://developer.mozilla.org/tr/docs/Web/API/Window.open';
					break;
				case 'uz':
					warningMessage = 'window.showModalDialog()’dan foydalanish eskirgan. O‘rniga window.open()’dan foydalaning. Ko‘proq yordam olish uchun https://developer.mozilla.org/en-US/docs/Web/API/Window.open saytiga kiring';
					break;
				case 'xh':
					warningMessage = 'Ukusetyenziswa kwe-window.showModalDialog() akwamkelwanga. Sebenzisa i-window.open() endaweni yayo. Ukuze ufumane uncedo olungakumbi https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'zh-CN':
					warningMessage = 'window.showModalDialog() 已废弃。请使用 window.open() 代替。更多信息见 https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				case 'zh-TW':
					warningMessage = '已棄用 window.showModalDialog(),請改用 window.open。若需更多資訊請參考 https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
					break;
				default:
					warningMessage = 'Use of window.showModalDialog() is deprecated. Use window.open() instead. For more help https://developer.mozilla.org/en-US/docs/Web/API/Window.open';
			}
			console.warn(warningMessage);

			var newTab = windowInstance.open(argumentList[0]);
			if (newTab) {
				// ポップアップブロックされていなければ
				newTab.dialogArguments = argumentList[1];
			}
		},
	});
} catch (e) {
	if (e.message === 'Proxy is not defined') {
		// Opera、Google Chrome
		var WindowPrototype = Window.prototype;
		var _open = WindowPrototype.open;

		WindowPrototype.open = function () {
			if (2 in arguments) {
				delete arguments[2];
			}
			return _open.apply(this, arguments);
		};

		WindowPrototype.showModalDialog = function (url) {
			console.warn('Chromium is considering deprecating showModalDialog. Please use window.open and postMessage instead.');
			var newTab = _open.call(this, url);
			if (newTab) {
				// ポップアップブロックされていなければ
				newTab.dialogArguments = arguments[1];
			}
		};
	} else {
		throw e;
	}
}

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址