作为一种临时解决方案,如果有人需要默认启用该切换按钮,您可以将此脚本添加到您的主题中(我已将其放在 <body> 下),该脚本基本上会查找 AI 搜索结果中的更改,然后将 AI 结果切换为启用。这不是最简洁的代码,也许 @awesomerobot 有更优雅的方法可以做到这一点。
<script type="text/javascript">
// 此脚本用于在搜索完成后启用切换按钮以包含来自 AI 的搜索结果 - 一旦有原生选项默认启用此功能,请删除
console.log('脚本已加载。持续查找 .semantic-search__searching 并管理观察者。');
let searchObserver = null; // 用于保存观察者实例的变量
function observeSearchContainer() {
const searchStatusContainer = document.querySelector('.semantic-search__searching');
if (searchStatusContainer) {
// 如果找到容器
if (!searchObserver) {
// 如果尚未运行观察者,则启动一个
console.log('.semantic-search__searching 已找到。开始观察。');
searchObserver = new MutationObserver(function(mutations) {
//console.log('在 .semantic-search__searching 中检测到变异:', mutations);
mutations.forEach(function(mutation) {
// 检查观察到的容器内的相关变异
if (mutation.type === 'characterData') {
//console.log('检测到相关的变异类型。尝试触发切换按钮功能。 ' + mutation.type);
const currentToggleButton = document.querySelector('button.d-toggle-switch__checkbox.semantic-search__results-toggle');
if (currentToggleButton) {
const isCurrentlyEnabled = currentToggleButton.getAttribute('aria-checked') === 'true';
if (!isCurrentlyEnabled) { // 如果切换按钮当前未启用
// 触发点击事件以激活相关功能
currentToggleButton.click();
console.log('已触发切换按钮点击事件。');
} else {
console.log('切换按钮已启用。');
}
} else {
// 如果在容器仍然存在时移除了切换按钮,可能会出现这种情况
console.log('尝试触发功能时未找到切换按钮。');
}
}
});
});
const config = { childList: true, subtree: true, characterData: true, attributes: true };
searchObserver.observe(searchStatusContainer, config);
console.log('MutationObserver 已在 .semantic-search__searching 上启动。');
} else {
// 找到容器,并且观察者已在运行
//console.log('.semantic-search__searching 已找到,观察者已激活。');
}
} else {
// 如果未找到容器
if (searchObserver) {
// 如果之前有一个正在运行的观察者,则意味着容器已被移除
console.log('.semantic-search__searching 已移除。正在断开观察者连接。');
searchObserver.disconnect(); // 停止观察
searchObserver = null; // 重置观察者变量
} else {
// 未找到容器,并且没有活动的观察者(正确状态)
//console.log('.semantic-search__searching 尚未找到。');
}
}
}
// 使用间隔来定期检查容器是否存在
const containerCheckInterval = setInterval(observeSearchContainer, 500); // 每 500 毫秒检查一次
</script>