代碼如下
const script = document.createElement("script")
script.innerHTML = `
function fireKeyEvent(el, evtType, keyCode) {
var doc = el.ownerDocument,
win = doc.defaultView || doc.parentWindow,
evtObj;
if (doc.createEvent) {
if (win.KeyEvent) {
evtObj = doc.createEvent('KeyEvents');
evtObj.initKeyEvent(evtType, true, true, win, false, false, false, false, keyCode, 0);
}
else {
evtObj = doc.createEvent('UIEvents');
Object.defineProperty(evtObj, 'keyCode', {
get: function () { return this.keyCodeVal; }
});
Object.defineProperty(evtObj, 'which', {
get: function () { return this.keyCodeVal; }
});
evtObj.initUIEvent(evtType, true, true, win, 1);
evtObj.keyCodeVal = keyCode;
if (evtObj.keyCode !== keyCode) {
console.log("keyCode " + evtObj.keyCode + " 和 (" + evtObj.which + ") 不匹配");
}
}
el.dispatchEvent(evtObj);
}
else if (doc.createEventObject) {
evtObj = doc.createEventObject();
evtObj.keyCode = keyCode;
el.fireEvent('on' + evtType, evtObj);
}
}
let t = 0
let timer = null
let content = null
let Min = 10000
let Max = 12000
let time = Min
window.onkeydown = e => {
if (e.keyCode === 18) {
if (t++ % 2 === 0) {
console.log('彈幕開(kāi)始')
new Promise((resolve, reject) => {
if (window.confirm('自定義彈幕請(qǐng)點(diǎn)擊確定饰序,自動(dòng)彈幕模式請(qǐng)點(diǎn)擊取消')) {
content = window.prompt('請(qǐng)輸入自動(dòng)發(fā)送的彈幕內(nèi)容')
}
resolve(content)
} ).then(res => {
const hh = () => {
timer = setTimeout(() => {
const target = document.querySelector("#pub_msg_input")
let nodes = []
if (!res) nodes = document.querySelectorAll(".msg-normal .msg")
fireKeyEvent(target, 'keydown', 13)
target.value = res || nodes.length&&nodes[(Math.round(Math.random() * (nodes.length - 1)))].innerText || '大家好'
document.querySelector('#msg_send_bt').click()
time = (Min + Math.round(Math.random() * (Max - Min)))
console.log(time)
clearInterval(timer)
hh()
}, time)
}
hh()
})
} else {
console.log('彈幕已停止')
alert('彈幕已停止')
clearInterval(timer)
}
}
}
`
document.querySelector('body').append(script)
研究的時(shí)候發(fā)現(xiàn)虎牙每?jī)蓷l彈幕發(fā)送時(shí)間必須在10秒以外川背,10秒以?xún)?nèi)的話贰拿,就會(huì)被后端關(guān)閉WebSocket的連接。熄云。所以上面這段代碼并沒(méi)有太大的意義膨更。。不過(guò)運(yùn)行實(shí)際效果還是蠻有趣的缴允。荚守。
前提
首先是裝有油猴插件的瀏覽器,點(diǎn)擊油猴圖標(biāo)练般,點(diǎn)擊"添加新腳本"矗漾,然后把上面代碼粘貼到"your code here" 處。薄料。
"設(shè)置"面板中敞贡,"用戶(hù)匹配"點(diǎn)擊"添加",輸入
*://www.huya.com/*
即可摄职。
不想安裝油猴插件的誊役,可以直接打開(kāi)控制臺(tái),把代碼粘貼進(jìn)去谷市,回車(chē)即可蛔垢。這種方式的話,刷新一下頁(yè)面需要重新粘貼一遍代碼迫悠。
用法
在虎牙視頻播放界面鹏漆,按 ALT 鍵。
按一下创泄,選擇發(fā)送彈幕類(lèi)型艺玲,點(diǎn)擊"確定"是手動(dòng)輸入彈幕內(nèi)容,然后每隔10-12秒自動(dòng)重復(fù)發(fā)送鞠抑,點(diǎn)擊"取消"是自動(dòng)獲取別人的彈幕進(jìn)行發(fā)送板驳。
再按一下,取消發(fā)送彈幕