您需要先安装一个扩展,例如 篡改猴、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)
- }