您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Sanskrit Language Tools
当前为
// ==UserScript== // @name Sanskrit Tools - Toolbar // @namespace stgeorge // @description Sanskrit Language Tools // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js // @grant GM_setValue // @grant GM_getValue // @version 2.4.2 // ==/UserScript== (function() { const IGNORES = [ 'mail.yahoo.com', 'groups.yahoo.com', 'spokensanskrit.de', ]; const ALLOW_ANCHORS = [ 'sanskrit.uohyd.ernet.in/cgi-bin/scl/SHMT/generate.cgi', ]; const GROUPS = [ { type:'link', entries: [ [ 'news', 'वार्ता', 'Doordarshan Sanskrit News', 'www.youtube.com/user/sanskritanews/videos' ], [ 'mag', 'पत्रिका', 'Sambhaashana Sandesha magazine', 'www.sambhashanasandesha.in/' ], [ 'books', 'पुस्तकानि', 'Books', 'www.sanskrit.nic.in/ebook.htm' ], [ 'wiki', 'विकिपीडिया', 'Sanskrit Wikipedia', 'sa.wikipedia.org' ] ] }, { type:'link', entries: [ [ 'dict', 'शब्दकोशः', 'Dictionary', 'spokensanskrit.de', special ], [ 'sandhi', 'सन्धिः', 'Sandhi trainer', 'sanskrit.inria.fr/DICO/sandhi.en.html', ], [ 'grammar', 'तिङन्त-/सुबन्त-रूपाणि', 'Grammar lookup', 'sanskrit.inria.fr/DICO/grammar.fr.html' ], [ 'taddita', 'तद्दितरूपाणि', 'Noun forms', 'sanskrit.uohyd.ernet.in/scl/skt_gen/waxXiwa/waxXiwa_gen.html' ], [ 'sutra', 'माहेश्वरसूत्राणि', 'Maaheshwara sutras', 'en.wikipedia.org/wiki/Siva_Sutra#Text' ], ] }, { type:'option', entries: [ [ 'o_auto', 'check', 'Auto-dictionary ', 'Double-clicking a word will automatically launch the dictionary', true], [ 'o_mini', 'check', 'Mini dictionary ', 'Launch the dictionary in a slim window', true], ] } ]; var toolbarHTML; var iconHTML; var icon; var cb = {}; var numClicks = 0; var vdiv = null; var allowAnchor = false; function main() { for (var i in IGNORES) { if (document.URL.indexOf(IGNORES[i]) != -1) { return; } } for (var i in ALLOW_ANCHORS) { if (document.URL.indexOf(ALLOW_ANCHORS[i]) != -1) { allowAnchor = true; break; } } init(); if (window.top != window.self) return; make(); display(); } function make() { var elements = makeGroups(); toolbarHTML = '<div id="toolbar" style="overflow:hidden; float:left">' + '<div style="float:left; display:inline-block">' + elements + '</div>' + '</div>' + '<a id="a_dict" style="display:none" href="" target="sbt"></a>' ; iconHTML = '<div id="icon" title="Click to show/hide Sanskrit Toolbar">\u0938' + '</div>' ; } function makeGroups() { var html = ''; for (var i in GROUPS) { var g = GROUPS[i]; if (g.type == 'link') html += makeLinks(g); else if (g.type == 'option') html += makeOptions(g); else { continue; } html += '<span class="st_space"></span>'; } return html; } function makeLinks(g) { var html = ''; for (var i in g.entries) { var e = g.entries[i]; if (e[4]) { html += '<button id="'+e[0]+'" title="'+e[2]+'" class="st_cb st_button">'+ e[1]+'</button>'; cb[e[0]] = e[4]; } else { html += '<a style="color:inherit" href="http://'+e[3]+'" target="sbt">' + '<button id="'+e[0]+'" title="'+e[2]+'" class="st_button">'+ e[1]+'</button></a>'; } } return html; } function makeOptions(g) { var html = ''; for (var i in g.entries) { var e = g.entries[i]; if (e[1] == 'label') { html += '<span id="'+e[0]+'" class="st_label">'+e[2]+'</span>'; } else if (e[1] == 'check') { var checked = e[4] ? ' checked="checked"' : '' html += '<input type="checkbox" id="'+e[0]+'" class="st_input" title="'+e[3]+'"' + checked + '/>' + '<span class="st_label" title="'+ e[3] + '"> ' + e[2] + '</span>'; } } return html; } function display() { place('toolbar', toolbarHTML, { position: 'fixed', 'top': 0, margin: 0, height: '45px', width: '100%', zIndex: 2999999999, paddingTop: '5px', backgroundColor: '#eeeeee', borderBottom: '1px solid orange', display:'none' }); $('.st_space').css({ marginLeft:'20px', verticalAlign:'middle', }); $('.st_button').css({ marginLeft:'10px', padding:'5px', verticalAlign:'middle', height:'35px', cursor: 'pointer', }); $('.st_label').css({ verticalAlign:'middle', padding:'0px', height:'30px', verticalAlign:'middle' }); $('.st_input').css({ marginLeft:'10px', verticalAlign:'middle', padding:'0px', height:'30px', verticalAlign:'middle' }); place('icon', iconHTML, { cursor:'pointer', 'float':'right', padding: '0px 15px 18px', fontWeight:'bold', backgroundColor: 'white', color:'red', position:'fixed', right:0, bottom: 0, height:'10px', width:'10px', zIndex:9999 }); icon = $('#icon').get(0); $('#o_mini').prop('checked', GM_getValue('mini', true)); $('#o_auto').prop('checked', GM_getValue('auto', true)); $('#icon').on('click', toggle); $('.st_cb').on('click', function(e) { e.preventDefault(); e.stopPropagation(); var x = $(this).attr('id'); special(x); }); $('.st_option').on('change', function(e) { var x = $(this).attr('id'); options[x] = $(this).val(); }); $('#o_mini').on('change', function(e) { GM_setValue('mini', $(this).prop('checked')); }); $('#o_auto').on('change', function(e) { GM_setValue('auto', $(this).prop('checked')); }); if (GM_getValue('status', 0)) show(); } function place(id, html, css) { $('body').prepend(html); $('#'+id).css(css); } function toggle() { var s = GM_getValue('status', 0); if (s == 0) show(); else hide(); } function show() { $('#toolbar').css({ 'display':'block', }); $('body').css('marginTop', '50px'); GM_setValue('status', 1); } function hide() { $('#toolbar').css({ 'display':'none', }); $('body').css('marginTop', 0); GM_setValue('status', 0); } function init() { document.addEventListener('mouseup', function(e) { var node = (e.target || e.srcElement); if (e.button != 0 || (node.nodeName == 'A' && !allowAnchor) || node.nodeName == 'BUTTON') return; var n = node; while (n) { if (n == icon) return; if (n.getAttribute) { var ce = n.getAttribute('contenteditable'); if (ce) return; } n = n.parentNode; } if (++numClicks == 1) { window.setTimeout(function() { dictionaryLookup(); numClicks = 0; }, 300); } }, false); } function dictionaryLookup() { var selectedText = getSelectedText(true); if (selectedText != null && selectedText.length > 0) { if ($('#o_auto').prop('checked')) { if (selectedText.indexOf(' ') != -1) return; showDict(selectedText); } } else { hideDict(); } } function getSelectedText(trim) { var text = (window.getSelection) ? window.getSelection().toString() : (document.getSelection) ? document.getSelection().toString() : (document.selection) ? document.selection.createRange().text : null; if (trim && text != null) text = text.trim(); return text; } function showDict(text) { var vwidth; if (vdiv) vdiv.close(); if ($('#o_mini').prop('checked')) { vwidth = 250; var url = 'http://m.spokensanskrit.de/index.php?tinput='; vdiv = window.open(url + text + '&trans=Translate', 'stdict', ',left=' + (screen.width-vwidth) + ',width=' + vwidth + ',top=' + 0 + ',height=' + screen.height + ',location=0,menubar=0,status=0,scrollbars=1,toolbar=0,dependent=1' ); } else { var a = $('#a_dict'); a.on('click', function(e) { a.attr('href', 'http://spokensanskrit.de/index.php?trans=Translate&tinput='+text); }); a.get(0).click(); } } function hideDict() { if (vdiv) { vdiv.close(); vdiv = null; } } function special(id) { showDict(''); } main(); })();