自动回复(一言hitokoto网抑云句子版)
// ==UserScript==
// @name 自动回复(一言hitokoto网抑云句子版)
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.1.1
// @description 自动回复
// @author 张仨
// @grant unsafeWindow
// @grant GM_addStyle
// @grant GM_xmlhttpRequest
// @connect https://v1.hitokoto.cn
// @match https://bbs.tampermonkey.net.cn/*
// ==/UserScript==
(function () {
'use strict';
var div = document.querySelector('.kmstt'); //搜寻元素
div.insertAdjacentHTML('afterend', '<a class="button">自动回复</a>');
/*
*insertAdjacentHTML() 方法将指定的文本解析为 Element 元素,并将结果节点插入到DOM树中的指定位置。
*它不会重新解析它正在使用的元素,因此它不会破坏元素内的现有元素。
*这避免了额外的序列化步骤,使其比直接使用innerHTML操作更快。
*'beforebegin':元素自身的前面。
*'afterend':元素自身的后面。
*'afterbegin':插入元素内部的第一个子节点之前。
*'beforeend':插入元素内部的最后一个子节点之后。
*/
//监听按钮点击事件
document.querySelector('.button').onclick = async function () {
await getHitokoto().then((j)=>{
document.querySelector('#fastpostmessage').value = j;
document.querySelector('#fastpostrefresh').checked = true
document.querySelector('#fastpostsubmit').click()
})
}
})();
function getHitokoto() {
return new Promise((resolve,reject)=>{
GM_xmlhttpRequest({
url:"https://v1.hitokoto.cn/?c=j",
method:"GET",
headers:{
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62"
},
timeout:3000,
onload:function(xhr) {
if (xhr.status == 200) {
var j = JSON.parse(xhr.responseText).hitokoto
resolve(j)
} else {
resolve("ggnb!!!!!!!")
}
},
ontimeout:function() {
resolve("ggnb!!!!!!!")
}
})
})
}
//设置css样式,这里简单设置其中几项属性,其他继承父元素
GM_addStyle(`
.button {
background: #34c0f1 !important; /*加上!important提高等级,避免被原网页css覆盖*/
cursor: pointer; /*鼠标放上去变成小手*/
margin-top: 10px; /*上外边距,跟元素自身拉开间距*/
transition: background 0.5s; /*过渡效果,注意浏览器兼容性*/
}
.button:hover{
background: #3fd1b2 !important; /*:hover CSS伪类,鼠标悬停效果,这里是鼠标放上去就变色*/
}
`)