悬浮窗操作面板
// 动态更新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()就会卡死闪退
回答
根据你的描述,运行 console.show()
会导致脚本卡死或闪退,这可能是由于以下原因:
- 重复显示控制台:如果你已经通过
floaty.window()
创建了一个悬浮窗,并且又调用了console.show()
显示控制台,可能会导致界面冲突或者资源占用过高,从而引发崩溃。 - 控制台未正确初始化:在某些情况下,如果
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()
之前添加一些调试信息,以确定问题的具体原因。