Javascript
这是 JavaScript 的第一页,下面会放置一些自己的油猴脚本编写的示例:
首字母大写
/**
* 将字符串的第一个字母转换为大写,如果后续字符与第一个字符相同(忽略大小写),也将它们转换为大写。
* 例如,'kkFile' 会被转换为 'KKFile'。
*
* @param {string} string - 待处理的字符串。
* @returns {string} - 转换后的字符串。
*/
function capitalizeFirstLetterAndMatched(string) {
if (!string || string.length < 2) return string;
// 将第一个字符转换为大写
let result = string.charAt(0).toUpperCase();
// 检查第二个字符是否与第一个字符相同
if (string[1].toLowerCase() === string[0].toLowerCase()) {
// 第二个字符与第一个字符相同,继续执行转换
for (let i = 1; i < string.length; i++) {
if (string[i].toLowerCase() === string[0].toLowerCase()) {
result += string[i].toUpperCase();
} else {
result += string[i];
}
}
} else {
// 第二个字符与第一个字符不同,保持剩余部分不变
result += string.substring(1);
}
return result;
}
百度翻译
/**
* 翻译内容的函数。
* 这个函数使用百度翻译API来翻译给定的文本,并调用回调函数处理翻译后的文本。
*
* @param {string} query - 需要翻译的文本。
* @param {Function} callback - 翻译成功后执行的回调函数,该函数接受翻译后的文本作为参数。
*/
function translateContent(query, callback) {
// 获取当前时间戳,用于生成签名
const salt = (new Date()).getTime();
// 创建用于生成签名的字符串
const str1 = appid + query + salt + key;
// 使用CryptoJS库生成MD5签名
const sign = CryptoJS.MD5(str1).toString(CryptoJS.enc.Hex);
// 百度翻译API的URL
const url = 'http://api.fanyi.baidu.com/api/trans/vip/translate';
// 创建POST请求的数据体
const data = `q=${encodeURIComponent(query)}&appid=${appid}&salt=${salt}&from=${from}&to=${to}&sign=${sign}`;
// 使用GM.xmlHttpRequest发送POST请求
GM.xmlHttpRequest({
method: 'POST',
url: url,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: data,
onload: function(response) {
// 检查响应状态
if (response.status === 200) {
// 解析响应内容为JSON
const respjson = JSON.parse(response.responseText);
// 检查是否有翻译结果
if (respjson && respjson.trans_result && respjson.trans_result.length > 0) {
// 调用回调函数,并传递翻译结果
callback(respjson.trans_result[0].dst);
} else {
console.error('翻译失败:', data);
}
} else {
console.error('翻译请求失败:', response);
}
}
});
}
页面加载完成后执行
/**
* 显示"正在加载插件"消息
*/
function showLoadingMessage() {
// 创建一个新的div元素来显示加载消息
var loadingMessage = document.createElement('div');
// 设置消息内容
loadingMessage.innerHTML = '正在加载插件';
// 设置消息的样式
loadingMessage.style.position = 'fixed';
loadingMessage.style.top = '50px';
loadingMessage.style.left = '50%';
loadingMessage.style.fontSize = '20px';
loadingMessage.style.opacity = '1';
// 将消息元素添加到页面上
document.body.appendChild(loadingMessage);
// 设置一个定时器,在2秒后开始淡出动画
setTimeout(function() {
// 使用CSS过渡来改变透明度
loadingMessage.style.transition = 'opacity 1s ease-out';
// 设置透明度为0以启动淡出动画
loadingMessage.style.opacity = '0';
}, 2000);
}
/**
* initialCheck函数
*
* 该函数用于集中处理所有需要在页面加载或变化时运行的函数。
* 只需在该函数中添加或删除函数调用,即可轻松管理哪些函数会被执行。
*/
function initialCheck() {
// 如果您有一个用于自动登录的函数
autologin();
// 检查是否出现了特定的规则添加窗体,并据此执行其他函数
if (rule_addition_control()) {
// 在这里执行您的其他函数
console.log('初始检查已完成。');
}
// 在这里添加其他需要执行的函数
// customFunction3();
// customFunction4();
// ...
}
// 初始化MutationObserver
const observer = new MutationObserver(function(mutations) {
initialCheck();
});
// 配置MutationObserver
const config = { attributes: true, childList: true, subtree: true };
// 开始观察
observer.observe(document.body, config);
// 页面加载完成后执行
window.addEventListener('load', function() {
showLoadingMessage();
});
自动登录
/**
* 自动登录函数
*/
function autologin() {
// 检查是否在登录页面,通过查找特定的<div>元素来判断
const loginBackground = document.getElementById('LoginBackgroud-body');
if (loginBackground) {
try {
// 获取用户名和密码输入框,并填充信息
const usernameInput = document.querySelector('input[name="userName"]');
const passwordInput = document.querySelector('input[name="password"]');
if (usernameInput && passwordInput) {
usernameInput.value = GLOBAL_CONFIG.username;
passwordInput.value = GLOBAL_CONFIG.password;
// 找到登录按钮并模拟点击
const loginButton = document.querySelector('span.x-btn-icon-el.icon-login');
if (loginButton) {
loginButton.click();
} else {
console.warn('未找到登录按钮');
}
} else {
console.warn('用户名或密码输入框未找到');
}
} catch (error) {
console.error('自动登录失败:', error);
}
}
}
最后更新于