mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-13 01:30:31 +08:00
* Fix crash on unload Within main, exists a `window.beforeunload` handler which brings up the "Are you sure you want to close PiKVM session?" message. When the page is refreshed, the event is `undefined` and, the code which sets the `event.returnValue` to the aforementioned text provides an exception. To reproduce: 1. Open KVMD web 2. Open developer tools to view Console. 3. Interact with the page by clicking the main window. 4. Refresh the page 5. Observe type error in console. This patch checks if the event is defined before attempting to set the `event.returnValue`. Other functions are maintained. * Add space
61 lines
2.5 KiB
JavaScript
61 lines
2.5 KiB
JavaScript
/*****************************************************************************
|
|
# #
|
|
# KVMD - The main PiKVM daemon. #
|
|
# #
|
|
# Copyright (C) 2018-2023 Maxim Devaev <mdevaev@gmail.com> #
|
|
# #
|
|
# This program is free software: you can redistribute it and/or modify #
|
|
# it under the terms of the GNU General Public License as published by #
|
|
# the Free Software Foundation, either version 3 of the License, or #
|
|
# (at your option) any later version. #
|
|
# #
|
|
# This program is distributed in the hope that it will be useful, #
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
# GNU General Public License for more details. #
|
|
# #
|
|
# You should have received a copy of the GNU General Public License #
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
|
# #
|
|
*****************************************************************************/
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
import {tools, $} from "../tools.js";
|
|
import {checkBrowser} from "../bb.js";
|
|
import {wm, initWindowManager} from "../wm.js";
|
|
|
|
import {Session} from "./session.js";
|
|
|
|
|
|
export function main() {
|
|
if (checkBrowser(null, "/share/css/kvm/x-mobile.css")) {
|
|
tools.storage.bindSimpleSwitch($("page-close-ask-switch"), "page.close.ask", true, function(value) {
|
|
if (value) {
|
|
window.onbeforeunload = function(event) {
|
|
let text = "Are you sure you want to close PiKVM session?";
|
|
if (event) {
|
|
event.returnValue = text;
|
|
}
|
|
return text;
|
|
};
|
|
} else {
|
|
window.onbeforeunload = null;
|
|
}
|
|
});
|
|
|
|
initWindowManager();
|
|
|
|
tools.el.setOnClick($("open-log-button"), () => window.open("/api/log?seek=3600&follow=1", "_blank"));
|
|
|
|
if (tools.config.getBool("kvm--full-tab-stream", false)) {
|
|
wm.toggleFullTabWindow($("stream-window"), true);
|
|
}
|
|
wm.showWindow($("stream-window"));
|
|
|
|
new Session();
|
|
}
|
|
}
|