您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Auto add Text in ChatBox.
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/455302/1120373/%5BYouTube%5D%20Auto%20add%20Text%20in%20ChatBox.js
// ==UserScript== // @name [YouTube] Auto add Text in ChatBox // @namespace http://tampermonkey.net/ // @version 0.1 // @description Auto add Text in ChatBox. // @author You // @include https://www.youtube.com/watch* // @include https://www.youtube.com/live_chat* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // ==/UserScript== const player = document.getElementById("movie_player") /** *@Description チャットエリアが表示された後にチャットエリアのiframe内にkeydownイベントを追加する。 */ let getChatInterval = setTimeout( ()=> { let chat = document.getElementById("chatframe") if(chat != null && chat.contentWindow.document.querySelector('#input') != null || document.querySelector('#input') != null){ if(document.querySelector('#input') != null){ chat = document.querySelector('#input') }else{ chat = chat.contentWindow } addText("#") chat.addEventListener("keydown", e => { if(e.key == "Enter"){ //フォーカスが当てられている要素のIDを取得 let activeElementId //Elementsタブからiframeタグ内を参照している場合はwindowの参照先もiframe内になるので判定する。 if(document.getElementById("chatframe") != null){ activeElementId = document.getElementById("chatframe").contentWindow.document.activeElement.id }else{ activeElementId = document.activeElement.id } //テキストボックスに指定した文字を追加。 if(activeElementId == "input"){ setTimeout( () => addText("#")) } } }) } },5000) /** *@Description キャレットの位置を文末に変更 */ function addText(text){ //Elementsタブからiframeタグ内を参照している場合はwindowの参照先もiframe内になるので判定する。 if(document.getElementById("chatframe") != null){ const chat = document.getElementById("chatframe").contentWindow chat.document.querySelector('#input').setAttribute("has-text" , "") chat.document.querySelector('#input').querySelector('#input').setAttribute("aria-invalid" , "") chat.document.querySelector('#input').querySelector('#input').textContent = text moveEndCaret(chat.document.querySelector('#input').querySelector('#input') , chat) }else{ document.querySelector('#input').setAttribute("has-text" , "") document.querySelector('#input').querySelector('#input').setAttribute("aria-invalid" , "") document.querySelector('#input').querySelector('#input').textContent = text moveEndCaret(document.querySelector('#input').querySelector('#input')) } } /** *@Description キャレットの位置を文末に変更 */ function moveEndCaret(textBox , iframewindow = window){ const selection = iframewindow.getSelection() const range = document.createRange() const offset = textBox.innerText.length range.setStart(textBox.firstChild, offset) range.setEnd(textBox.firstChild, offset) selection.removeAllRanges() selection.addRange(range) }