二维码快速生成 FastQrcode

fast qrcode 选中文字快速生成二维码

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         二维码快速生成 FastQrcode
// @namespace    http://tampermonkey.net/
// @version      0.4
// @description fast qrcode 选中文字快速生成二维码
// @author       UndCover
// @include      *:*
// @require      https://cdn.staticfile.org/jquery/1.10.0/jquery.min.js
// @require      https://cdn.staticfile.org/jquery.qrcode/1.0/jquery.qrcode.min.js
// ==/UserScript==
(function() {
	'use strict';
	function utf16to8(str) {
		var out, i, len, c;
		out = "";
		len = str.length;
		for (i = 0; i < len; i++) {
			c = str.charCodeAt(i);
			if ((c >= 0x0001) && (c <= 0x007F)) {
				out += str.charAt(i);
			} else if (c > 0x07FF) {
				out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
				out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
				out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
			} else {
				out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
				out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
			}
		}
		return out;
	}
	var code = {
		addElement: function() {
			var tooltip = jQuery('<div id="UndCover_Tooltip" style="display:none;width:auto; height:auto; padding:10px;background:orange no-repeat left top;"><a id="UndCover_Show">显示</a> <a id="UndCover_Current">网址</a> <a id="UndCover_Close">关闭</a></div>');
			var qrcode = jQuery('<div id="UndCover_Qrcode" style="display:none;z-index:999; display:block; position:fixed; left:300px; top:100px; margin:0; width:auto; height:auto;"></div>');
			jQuery('body').append(tooltip);
			jQuery('body').append(qrcode);
			// $(".UndCoverIcon").css({
			// 	"width": "30px",
			// 	"height": "30px",
			// 	"fill": "#80808080",
			// 	"overflow": "hidden"
			// });
		},
		eventHandle: function() {
			var selection = "";
			var clickable = true;
			var $qrcode = $("#UndCover_Qrcode");
			/* 绑定鼠标左键按住事件 */
			$qrcode.bind("mousedown",
			function(event) {
				clickable = true;
				/* 获取需要拖动节点的坐标 */
				var offset_x = $(this)[0].offsetLeft; //x坐标
				var offset_y = $(this)[0].offsetTop; //y坐标
				/* 获取当前鼠标的坐标 */
				var mouse_x = event.pageX;
				var mouse_y = event.pageY;
				/* 绑定拖动事件 */
				/* 由于拖动时,可能鼠标会移出元素,所以应该使用全局(document)元素 */
				$(document).bind("mousemove",
				function(ev) {
					clickable = false;
					/* 计算鼠标移动了的位置 */
					var _x = ev.pageX - mouse_x;
					var _y = ev.pageY - mouse_y;
					/* 设置移动后的元素坐标 */
					var now_x = (offset_x + _x) + "px";
					var now_y = (offset_y + _y) + "px";
					/* 改变目标元素的位置 */
					$qrcode.css({
						top: now_y,
						left: now_x
					});
				});
			});
			/* 当鼠标左键松开,接触事件绑定 */
			$(document).bind("mouseup",
			function() {
				$(this).unbind("mousemove");
			});

			$("body").mouseup(function(e) {
				$("#UndCover_Tooltip").hide();
				var x = 10;
				var y = 10;
				var r = "";
				if (document.selection) {
					r = document.selection.createRange().text;
				} else if (window.getSelection()) {
					r = window.getSelection();
				}
				if (r != "") {
					selection = r.toString();
					$("#UndCover_Tooltip").css({
						"top": (e.pageY + y) + "px",
						"left": (e.pageX + x) + "px",
						"position": "absolute"
					}).show("fast");
					$("#UndCover_Tooltip").show();
				}
			});
			$("#UndCover_Show").click(function() {
				$('#UndCover_Qrcode').empty();
				$('#UndCover_Qrcode').qrcode(utf16to8(selection));
				$('#UndCover_Qrcode').show();
			});
			$("#UndCover_Current").click(function() {
				$('#UndCover_Qrcode').empty();
				$('#UndCover_Qrcode').qrcode(window.location.href);
				$('#UndCover_Qrcode').show();
			});
			$("#UndCover_Close").click(function() {
				$("#UndCover_Tooltip").hide();
			});
			$("#UndCover_Qrcode").click(function() {
				if (clickable) $("#UndCover_Qrcode").hide();
			});
		}
	}
	code.addElement();
	code.eventHandle();
})();