PageSourceSearch

https://oppl.ru/assets/321ac5bf/js/speak.min.js

js oppl.ru collected 2026-10-02 04:51:57 UTC 1,465 bytes, 1 lines download raw bytes

1$(document).ready(function(){const $speakButton=$("#speakButton");const $stopButton=$("#stopButton");const $textDiv=$("#textToSpeak");if(!window.speechSynthesis||!$speakButton.length||!$stopButton.length||!$textDiv.length){return}function getCleanText(){let text=$textDiv.text().replace(/<[^>]*>/g," ").replace(/\s+/g," ").trim();const unwantedChars=/[«»"“”‘’„‟()\[\]{}⟨⟩<>~@#$%^&*_+=|\\:;…–—•·•]/g;text=text.replace(unwantedChars," ");text=text.replace(/&nbsp;|&quot;|&amp;|&lt;|&gt;/g," ");return text.replace(/\s{2,}/g," ").trim()}function checkVoices(){const voices=window.speechSynthesis.getVoices();const russianVoices=voices.filter(v=>v.lang.includes("ru")||v.lang.includes("RU"));if(russianVoices.length>0){$speakButton.show()}}checkVoices();window.speechSynthesis.onvoiceschanged=checkVoices;$speakButton.click(function(){const text=getCleanText();if(!text){return}const utterance=new SpeechSynthesisUtterance(text);utterance.lang="ru-RU";utterance.rate=.9;$speakButton.hide();$stopButton.show();utterance.onend=utterance.onerror=function(){$stopButton.hide();$speakButton.show()};window.speechSynthesis.cancel();window.speechSynthesis.speak(utterance)});$stopButton.click(function(){window.speechSynthesis.cancel();$stopButton.hide();$speakButton.show()});const observer=new MutationObserver(()=>{$speakButton.show()});if(observer==null){return}observer.observe($textDiv[0],{childList:true,subtree:true,characterData:true})});

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.