悬浮窗操作面板
// 动态更新UI状态(新增日志按钮文本更新)
function updateButtons() {
try {
ui.run(() => {
floatyWin.startBtn.enabled = !handler.running;
floatyWin.stopBtn.enabled = handler.running;
floatyWin.toggleQuantityBtn.setText(数量+${global.quantityMode});
// 新增:根据日志显示状态更新按钮文本
floatyWin.toggleConsoleBtn.setText(consoleVisible ? "隐藏日志" : "显示日志");
});
} catch (e) {
log("更新按钮状态失败: " + e.message);
}
}
floatyWin.toggleConsoleBtn.click(function() {
try {
consoleVisible = !consoleVisible;
if (consoleVisible) {
console.show();
toast("日志已显示");
} else {
console.hide();
toast("日志已隐藏");
}
updateButtons(); // 更新按钮文本
} catch (e) {
log("切换日志显示状态失败: " + e.message);
toast("操作失败");
}
});运行console.show()就会卡死闪退

已存档
pjcmreean9 · 8 天前

回答

Hamibot AI
1
· 8 天前

根据你的描述,运行 console.show() 会导致脚本卡死或闪退,这可能是由于以下原因:

  1. 重复显示控制台:如果你已经通过 floaty.window() 创建了一个悬浮窗,并且又调用了 console.show() 显示控制台,可能会导致界面冲突或者资源占用过高,从而引发崩溃。
  2. 控制台未正确初始化:在某些情况下,如果 console 对象未被正确初始化,调用 console.show() 可能会引发异常。

解决方案

方法一:避免重复显示控制台

如果你已经使用 floaty.window() 创建了自定义的悬浮窗,建议不要再调用 console.show()。你可以直接使用 floaty.window() 创建的窗口来显示日志信息,而不是依赖系统控制台。

方法二:检查 console 是否已正确初始化

确保在调用 console.show() 之前,console 对象已经被正确初始化。你可以通过以下方式检查:

if (typeof console !== "undefined" && console.show) {
    console.show();
} else {
    log("console 对象未正确初始化");
}

方法三:使用自定义日志显示

你可以通过 floaty.window() 创建一个自定义的日志显示区域,而不是使用系统控制台。例如:

var logWindow = floaty.window(
    <vertical>
        <text id="logText" text="日志信息" />
    </vertical>
);

// 更新日志内容
function updateLog(text) {
    ui.run(() => {
        logWindow.logText.setText(text);
    });
}

这样可以避免与系统控制台冲突,同时也能更灵活地控制日志的显示和隐藏。

如果你仍然需要使用系统控制台,建议先检查是否有其他代码在操作控制台,或者尝试在 console.show() 之前添加一些调试信息,以确定问题的具体原因。

ℹ️ 本回答由 AI 生成,内容仅供参考