您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Plays selected text as morse code.
当前为
// ==UserScript== // @name toMorse // @description Plays selected text as morse code. // @namespace https://greasyfork.org/en/users/11891-qon // @author Qon // @include * // @include about:toMorse // @noframes // @grant GM_getValue // @grant GM_setValue // @license Simple Public License 2.0 (SimPL) https://tldrlegal.com/license/simple-public-license-2.0-%28simpl%29 // @version 0.0.1.20150722045434 // ==/UserScript== /* TODO GUI Set your own hotkey BUG perfect Selection animation */ var sett = {} sett['cwpm'] = {def: 20, val: 20, min: 1, max: 100, label: 'Letter WPM', description: 'cwpm'} sett['ewpm'] = {def: 20, val: 20, min: 1, max: 100, label: 'Effective WPM', description: 'ewpm'} sett['tone'] = {def: 800, val: 800, min: 200, max: 3200, label: 'Tone frequency', description: 'tone'} function keypress (e) { if (!e) e = window.event; if (e.ctrlKey && e.key == 'm') { for (var key in sett) { // move this up when key is part of gm setting. if(sett.hasOwnProperty(key)) { sett[key]['val'] = GM_getValue(key, sett[key]['val']) } } playTextLCWO(sett['cwpm']['val'], sett['ewpm']['val'], sett['tone']['val'], window.getSelection().toString()) } } window.addEventListener("keydown", keypress); function playTextLCWO(charWpm, effectiveWpm, tone, str) { var prevAudio = document.getElementById('audioLCWO') if(prevAudio) { prevAudio.pause() prevAudio.remove() } var audio = document.createElement('audio') audio.id = 'audioLCWO' audio.src = 'http://cgi2.lcwo.net/cgi-bin/cw.ogg?s='+charWpm+'&e='+effectiveWpm+'&f='+tone+'&t='+str audio.addEventListener('ended', function(){document.getElementById('audioLCWO').remove()}); document.body.appendChild(audio) audio.play() } /// The settings form if (document.location == 'https://greasyfork.org/en/scripts/11117-tomorse') { var settingsdiv = document.createElement('div'); settingsdiv.id = 'tomorse-settings' var h3 = document.createElement('h3') h3.innerHTML = 'Script Settings' h3.style.marginBottom = '0' h3.style.paddingBottom = '0' settingsdiv.appendChild(h3) var qontdiv = document.createElement('div'); qontdiv.style.padding = '1em' qontdiv.style.margin = '0' qontdiv.style.background = '#E6FFE6' var setform = document.createElement('form'); function setting(name, variable, decription) { var span = document.createElement('span') span.innerHTML = name+': ' var inpN = document.createElement('input') inpN.id = 'input-'+variable inpN.name = variable inpN.type = 'number' inpN.value = sett[variable]['val'] var inpRange = document.createElement('input') inpRange.id = 'input-range-'+variable inpRange.name = variable inpRange.type = 'range' inpRange.min = sett[variable]['min'] inpRange.max = sett[variable]['max'] inpRange.value = sett[variable]['val'] f = function(ev){ var el = ev.target var inte = parseInt(el.value) GM_setValue(el.name, inte) sett[el.name]['val'] = inte document.getElementById('input-range-'+el.name).value = inte document.getElementById('input-'+el.name).value = inte if(el.name == 'cwpm' && document.getElementById('wpm-link').checked) { document.getElementById('input-range-'+'ewpm').value = inte document.getElementById('input-'+'ewpm').value = inte GM_setValue('ewpm', inte) sett['ewpm']['val'] = inte } } inpN.addEventListener('input', f) inpRange.addEventListener('input', f) setform.appendChild(span) setform.appendChild(inpN) setform.appendChild(inpRange) setform.appendChild(document.createElement('br')) } for(var key in sett) { if(sett.hasOwnProperty(key)) { setting(sett[key]['label'], key, sett[key]['description']) } } var box = document.createElement('input') box.id = 'wpm-link' box.checked = true box.type = 'checkbox' var linkSpan = document.createElement('span') linkSpan.innerHTML = 'Copy value to "Effective WPM"' linkSpan.style.fontSize = '75%' linkSpan.style.marginLeft = '100px' setform.insertBefore(linkSpan, setform.getElementsByTagName('br')[0]) setform.insertBefore(box, setform.getElementsByTagName('br')[0]) // var reset = document.createElement('input') // reset.type = 'reset' // setform.appendChild(reset) document.getElementById('script-content').appendChild(settingsdiv) qontdiv.appendChild(setform) settingsdiv.appendChild(qontdiv) }