1"use strict"; 2 3/* вÑзов ÑобÑÑÐ¸Ñ Ð¿Ñи вÑделении ÑекÑÑа */ 4 5var speakText = function(event) { 6 // поиÑк вÑÐµÑ ÐºÐ½Ð¾Ð¿Ð¾Ðº Ñ ÐºÐ»Ð°ÑÑом voice на ÑÑÑаниÑе 7 var isButton = document.getElementsByClassName("voice"); 8 9 /* полÑÑаем вÑделеннÑй ÑекÑÑ */ 10 var selObj = window.getSelection(); 11 var utterance = new SpeechSynthesisUtterance(selObj); 12 utterance.lang = "ru-RU"; 13 14 /* Ñоздание кнопки на ÑÑÑаниÑе */ 15 var addButton = document.createElement("button"); 16 var icon = document.createElement("i"); 17 var tag = event.target.tagName; 18 19 /* кнопка Ð´Ð»Ñ Ð¿ÑекÑаÑÐµÐ½Ð¸Ñ Ð¾Ð·Ð²ÑÑÐ¸Ð²Ð°Ð½Ð¸Ñ ÑекÑÑа */ 20 const stopSpeakButton = document.querySelector(".stopSpeak"); 21 22 /* еÑли вÑделен ÑекÑÑ Ð¸ неÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ */ 23 if (selObj.toString().length > 2 && !(tag === "BUTTON" || tag === "svg" || tag === "path") && isButton.length < 1) { 24 /* кнопка Ð´Ð»Ñ ÑÑÐµÐ½Ð¸Ñ */ 25 addButton.className = "voice"; 26 icon.className = "fas fa-volume-up"; 27 stopSpeakButton.addEventListener("click", function () { 28 speechSynthesis.pause(); 29 stopSpeakButton.style.display = "none"; 30 addButton.style.display = "block"; 31 }); 32 33 /* полÑÑаем позиÑиÑ, где пÑоизоÑел клик */ 34 addButton.style.top = event.pageY + 60 + 'px'; 35 addButton.style.left = event.pageX - 20 + 'px'; 36 37 /* добавление кнопки в DOM-деÑево */ 38 document.body.appendChild(addButton); 39 addButton.appendChild(icon); 40 41 /* ÑобÑÑие на кнопке */ 42 addButton.addEventListener("click", function () { 43 /* озвÑÑиваем вÑделеннÑй ÑекÑÑ */ 44 speechSynthesis.resume(); 45 speechSynthesis.speak(utterance); 46 /* ÑкÑÑваем ÐºÐ½Ð¾Ð¿ÐºÑ Ð²Ð¾ÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ */ 47 addButton.style.display = "none"; 48 49 /* ÐоказÑваем ÐºÐ½Ð¾Ð¿ÐºÑ Ð¿ÑекÑаÑÐµÐ½Ð¸Ñ Ð¾Ð·Ð²ÑÑки */ 50 stopSpeakButton.style.display = "block"; 51 stopSpeakButton.style.top = event.pageY + 60 + 'px'; 52 stopSpeakButton.style.left = event.pageX - 20 + 'px'; 53 }); 54 55 } else if (selObj.toString().length < 2) { 56 /* Удаление кнопки */ 57 for (var i = 0; i < isButton.length; i++) { 58 document.body.removeChild(isButton[i]); 59 } 60 stopSpeakButton.style.display = "none"; 61 /* ÐÑÑановиÑÑ ÑÑение ÑекÑÑа */ 62 selObj = ""; 63 speechSynthesis.cancel(); 64 } 65}; 66
67if (navigator.userAgent.search(/MSIE/) > 0 || navigator.userAgent.search(/NET CLR /) > 0) { 68 console.log("Internet Explorer не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑÑение ÑекÑÑа!"); 69} else { 70 document.addEventListener("click", speakText); 71}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.