您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a "virtual keyboard" to type locale-specific characters (currently only Turkish characters).
当前为
- // ==UserScript==
- // @name WME Virtual Keyboard
- // @namespace http://tampermonkey.net/
- // @version 2017.11.20.001
- // @description Adds a "virtual keyboard" to type locale-specific characters (currently only Turkish characters).
- // @author MapOMatic
- // @include /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor\/?.*$/
- // @license GNU GPLv3
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- function hidePopup($popup, $parentMenu) {
- var timeoutId = setTimeout(function() {
- $popup.css({display:'none'});
- $parentMenu.css({'border-radius':'8px 8px 8px 8px', 'background-color':'#999', 'box-shadow':''});
- }, 100);
- $popup.data('timeoutId', timeoutId);
- }
- function showPopup($popup, $parentMenu) {
- $popup.css({display:'inherit'});
- $parentMenu.css({'border-radius':'8px 8px 0px 0px', 'background-color':'#777', 'box-shadow':'#b2b2b2 2px 2px 8px'});
- clearTimeout($popup.data('timeoutId'));
- }
- function buttonOnMouseDown(evt) {
- evt.preventDefault();
- var char = $(evt.target).text();
- var element = document.activeElement;
- var $element = $(element);
- if (element && ($element.is('input:text') || $element.is('textarea'))) {
- var text = $element.val();
- var start = element.selectionStart;
- var end = element.selectionEnd;
- text = text.slice(0,start) + char + text.slice(end);
- $element.val(text);
- element.selectionStart = start+1;
- element.selectionEnd = start+1;
- $element.change();
- }
- }
- function init() {
- console.log('WME More Letters: Initializing...');
- var $menuParentDiv = $('#advanced-tools');
- var $menuDiv = $('<div>', {id:'more-letters-menu'})
- .css({width:'56px', height:'18px', left:'10px', top:'27px', 'background-color': '#999', 'padding-top':'1px',
- 'z-index':'2000', 'margin-top':'-12px', 'margin-bottom':'2px', cursor:'default', 'font-size':'12px',
- 'text-align':'center', color:'white', 'border-radius':'8px 8px 8px 8px'})
- .text('Turkish')
- .appendTo($menuParentDiv);
- var offset = $menuDiv.position();
- var $popupDiv = $('<div>', {id:'more-letters-popup'})
- .css({padding:'2px', left:offset.left, top:offset.top + $menuDiv.height(), 'background-color': '#f8f8f8',
- 'box-shadow':'#b2b2b2 2px 2px 8px', 'z-index':'2001', 'margin-top':'-11px', cursor:'default', 'font-size':'13px',
- 'text-align':'center', color:'black', display:'none', position:'absolute'})
- .appendTo($menuParentDiv);
- var chars = [['Ç','ç'],['Ğ','ğ'],['I','ı'],['İ','i'],['Ö','ö'],['Ş','ş'],['Ü','ü']];
- var $table = $('<table>');
- var buttonStyle = {width:'22px',height:'22px',padding:'unset'};
- var tdStyle = {padding:'4px 4px'};
- chars.forEach(function(pair) {
- $table.append($('<tr>').append(
- $('<td>').css(tdStyle).append($('<button>', {class:'waze-btn waze-btn-white'}).text(pair[0]).css(buttonStyle).mousedown(buttonOnMouseDown)),
- $('<td>').css(tdStyle).append($('<button>', {class:'waze-btn waze-btn-white'}).text(pair[1]).css(buttonStyle).mousedown(buttonOnMouseDown))
- ));
- });
- $popupDiv.append($table);
- $menuDiv.mousedown(function(evt) {
- evt.preventDefault();
- showPopup($popupDiv, $menuDiv);
- clearTimeout($menuDiv.data('timeoutId'));
- }).mouseenter(function() {
- var timeoutId = setTimeout(function() {
- showPopup($popupDiv, $menuDiv);
- }, 100);
- $menuDiv.data('timeoutId', timeoutId);
- }).mouseleave(function() {
- hidePopup($popupDiv, $menuDiv);
- clearTimeout($menuDiv.data('timeoutId'));
- });
- $popupDiv.mouseleave(function() {
- hidePopup($popupDiv, $menuDiv);
- }).mouseenter(function() {
- showPopup($popupDiv, $menuDiv);
- }).mousedown(function(evt) {
- evt.preventDefault();
- });
- }
- function bootstrap(retries) {
- retries = retries || 0;
- if (retries === 100) {
- console.log('WME More Letters: Initialization failed. Exiting script.');
- return;
- }
- if (window.require && W && W.loginManager &&
- W.map && W.loginManager.isLoggedIn() && $('#advanced-tools').length) {
- init();
- } else {
- retries += 1;
- setTimeout(function () {
- bootstrap(retries);
- }, 250);
- }
- }
- bootstrap();
- })();