//プラットフォーム別 最後に読むやつ //リンクを外部で開くか内部で出すか $(document).on('click', 'a', e => { var $a = $(e.target); var url = $a.attr('href'); if (!url) { var url = $a.parent().attr('href'); } var urls = url.match(/https?:\/\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/); //hrefがhttp/httpsならブラウザで if (urls[0]) { const { shell } = require('electron'); shell.openExternal(url); } else { location.href = url; } return false; }); //よく使うライブラリ /*マルチバイト用切り出し*/ $.isSurrogatePear = function(upper, lower) { return 0xD800 <= upper && upper <= 0xDBFF && 0xDC00 <= lower && lower <= 0xDFFF; }; $.mb_strlen = function(str) { var ret = 0; for (var i = 0; i < str.length; i++, ret++) { var upper = str.charCodeAt(i); var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0; if ($.isSurrogatePear(upper, lower)) { i++; } } return ret; }; $.mb_substr = function(str, begin, end) { var ret = ''; for (var i = 0, len = 0; i < str.length; i++, len++) { var upper = str.charCodeAt(i); var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0; var s = ''; if ($.isSurrogatePear(upper, lower)) { i++; s = String.fromCharCode(upper, lower); } else { s = String.fromCharCode(upper); } if (begin <= len && len < end) { ret += s; } } return ret; }; $.strip_tags = function(str, allowed) { allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []) .join(''); var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi, commentsAndPhpTags = /|<\?(?:php)?[\s\S]*?\?>/gi; return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) { return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''; }); };