Add a toggleable sidebar to Aliyun Tongyi Qianwen page.
// ==UserScript==
// @name 通义千问侧边栏收缩(Tongyi Qianwen Sidebar Toggle)
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Add a toggleable sidebar to Aliyun Tongyi Qianwen page.
// @author Epool
// @match https://tongyi.aliyun.com/qianwen/*
// @grant GM_addStyle
// @run-at document-idle
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// 注入CSS样式
function GM_addStyle(css) {
var style = document.createElement('style');
style.appendChild(document.createTextNode(css));
document.head.appendChild(style);
}
GM_addStyle(`
.container--IUBnVmjY .contentWrap--x9xW84h6 .side--L0W1WdHl {
width: 275px; /* 假设初始宽度 */
transition: width 0.3s ease; /* 添加过渡效果 */
}
/* 收缩状态的样式 */
.container--IUBnVmjY .contentWrap--x9xW84h6 .side--L0W1WdHl.collapsed {
display: none;
transition: width 0.3s ease; /* 添加过渡效果 */
}
/* 按钮样式 */
#toggle-sidebar {
position: absolute;
right: calc(50% - 50px); /* 让按钮位于侧边栏右侧的中间位置 */
top: 10px;
z-index: 9999;
padding: 5px 10px;
background-color: #ffffff;
border: 1px solid #000000;
cursor: pointer;
}
`);
// 延迟读取侧边栏元素
setTimeout(function() {
var sidebar = document.querySelector('.side--L0W1WdHl');
if (!sidebar) {
// 如果不存在这个侧边栏,则退出脚本
return;
}
// 创建按钮
var toggleButton;
if (document.getElementById('toggle-sidebar')) {
toggleButton = document.getElementById('toggle-sidebar');
} else {
toggleButton = document.createElement('button');
toggleButton.id = 'toggle-sidebar';
toggleButton.textContent = '展开/收缩';
document.body.appendChild(toggleButton);
}
// 添加点击事件监听器
toggleButton.addEventListener('click', function() {
sidebar.classList.toggle('collapsed');
});
}, 2000); // 延迟2秒读取侧边栏元素
// 使用MutationObserver监听侧边栏元素的出现
var observer = new MutationObserver(function(mutationsList) {
for (var mutation of mutationsList) {
if (mutation.addedNodes.length > 0) {
// 遍历新增的节点,检查是否包含侧边栏元素
for (var node of mutation.addedNodes) {
if (node.classList && node.classList.contains('side--L0W1WdHl')) {
// 创建按钮
var toggleButton;
if (document.getElementById('toggle-sidebar')) {
toggleButton = document.getElementById('toggle-sidebar');
} else {
toggleButton = document.createElement('button');
toggleButton.id = 'toggle-sidebar';
toggleButton.textContent = '展开/收缩';
document.body.appendChild(toggleButton);
}
// 添加点击事件监听器
toggleButton.addEventListener('click', function() {
node.classList.toggle('collapsed');
});
// 停止观察器
observer.disconnect();
return;
}
}
}
}
});
// 监听整个文档的变化
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
})();