mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 17:20:30 +08:00
Minimal android compatibility
Note that Samsung devices can't handle (hover: none) media query
This commit is contained in:
parent
684b0185f7
commit
e1c4a5163d
@ -140,7 +140,7 @@ div.keypad b {
|
|||||||
color: var(--cs-key-holded-bg);
|
color: var(--cs-key-holded-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (hover: none) and (pointer: coarse) {
|
@media only screen and (pointer: coarse) {
|
||||||
div.keypad {
|
div.keypad {
|
||||||
zoom: 1.28 !important;
|
zoom: 1.28 !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
@media only screen and (hover: none) and (pointer: coarse) {
|
@media only screen and (pointer: coarse) {
|
||||||
div#keyboard-window {
|
div#keyboard-window {
|
||||||
visibility: visible !important;
|
visibility: visible !important;
|
||||||
padding-top: 9px !important;
|
padding-top: 9px !important;
|
||||||
@ -47,7 +47,7 @@ div#keyboard-desktop {
|
|||||||
div#keyboard-mobile {
|
div#keyboard-mobile {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
@media only screen and (hover: none) and (pointer: coarse) {
|
@media only screen and (pointer: coarse) {
|
||||||
div#keyboard-desktop {
|
div#keyboard-desktop {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -103,7 +103,7 @@ div#stream-mouse-buttons {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (hover: none) and (pointer: coarse) {
|
@media only screen and (pointer: coarse) {
|
||||||
div#stream-window {
|
div#stream-window {
|
||||||
padding-top: 3px !important;
|
padding-top: 3px !important;
|
||||||
padding-bottom: 80px !important;
|
padding-bottom: 80px !important;
|
||||||
|
|||||||
@ -214,7 +214,7 @@ input[type=text], input[type=password] {
|
|||||||
height: 30px;
|
height: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (hover: none) and (pointer: coarse) and (orientation: portrait) {
|
@media only screen and (pointer: coarse) and (orientation: portrait) {
|
||||||
button,
|
button,
|
||||||
select,
|
select,
|
||||||
input[type=text],
|
input[type=text],
|
||||||
|
|||||||
@ -74,7 +74,7 @@ div.modal div.modal-window div.modal-buttons button {
|
|||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
}
|
}
|
||||||
@media only screen and (hover: none) and (pointer: coarse) and (orientation: portrait) {
|
@media only screen and (pointer: coarse) and (orientation: portrait) {
|
||||||
div.modal-buttons button {
|
div.modal-buttons button {
|
||||||
height: 50px !important;
|
height: 50px !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -80,7 +80,7 @@ ul#navbar li a#logo:hover:not(.active),
|
|||||||
ul#navbar li a.menu-button:hover:not(.active) {
|
ul#navbar li a.menu-button:hover:not(.active) {
|
||||||
background-color: var(--cs-navbar-item-hovered-bg);
|
background-color: var(--cs-navbar-item-hovered-bg);
|
||||||
}
|
}
|
||||||
@media only screen and (hover: none) and (pointer: coarse) {
|
@media only screen and (pointer: coarse) {
|
||||||
ul#navbar li a#logo:hover:not(.active),
|
ul#navbar li a#logo:hover:not(.active),
|
||||||
ul#navbar li a.menu-button:hover:not(.active) {
|
ul#navbar li a.menu-button:hover:not(.active) {
|
||||||
background-color: var(--cs-navbar-default-bg) !important;
|
background-color: var(--cs-navbar-default-bg) !important;
|
||||||
|
|||||||
@ -45,7 +45,7 @@ div.radio-box label:not(:last-of-type) {
|
|||||||
margin-right: 1px;
|
margin-right: 1px;
|
||||||
box-shadow: 1px 0 0 0 var(--cs-control-pressed-bg);
|
box-shadow: 1px 0 0 0 var(--cs-control-pressed-bg);
|
||||||
}
|
}
|
||||||
@media only screen and (hover: none) and (pointer: coarse) and (orientation: portrait) {
|
@media only screen and (pointer: coarse) and (orientation: portrait) {
|
||||||
div.radio-box input[type=radio] + label {
|
div.radio-box input[type=radio] + label {
|
||||||
height: 30px !important;
|
height: 30px !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,7 +42,7 @@
|
|||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media only screen and (hover: none) and (pointer: coarse) and (orientation: portrait) {
|
@media only screen and (pointer: coarse) and (orientation: portrait) {
|
||||||
@supports (-webkit-appearance: none) {
|
@supports (-webkit-appearance: none) {
|
||||||
input[type=range].slider {
|
input[type=range].slider {
|
||||||
margin: 20px 0 20px 0 !important;
|
margin: 20px 0 20px 0 !important;
|
||||||
|
|||||||
@ -53,7 +53,7 @@ div.tabs-box label {
|
|||||||
position: relative;
|
position: relative;
|
||||||
top: 1px;
|
top: 1px;
|
||||||
}
|
}
|
||||||
@media only screen and (hover: none) and (pointer: coarse) and (orientation: portrait) {
|
@media only screen and (pointer: coarse) and (orientation: portrait) {
|
||||||
div.tabs-box label {
|
div.tabs-box label {
|
||||||
height: 30px !important;
|
height: 30px !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -170,7 +170,7 @@ div.window.window-full-tab button.window-button-exit-full-tab {
|
|||||||
visibility: visible !important;
|
visibility: visible !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (hover: none) and (pointer: coarse) {
|
@media only screen and (pointer: coarse) {
|
||||||
div.window {
|
div.window {
|
||||||
padding-top: 45px !important;
|
padding-top: 45px !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -129,7 +129,7 @@ export function Mouse(__getGeometry, __recordWsEvent) {
|
|||||||
var __updateOnlineLeds = function() {
|
var __updateOnlineLeds = function() {
|
||||||
let is_captured;
|
let is_captured;
|
||||||
if (__absolute) {
|
if (__absolute) {
|
||||||
is_captured = (__stream_hovered || tools.browser.is_ios);
|
is_captured = (__stream_hovered || tools.browser.is_mobile);
|
||||||
} else {
|
} else {
|
||||||
is_captured = __isRelativeCaptured();
|
is_captured = __isRelativeCaptured();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -71,7 +71,7 @@ export function Ocr(__getGeometry) {
|
|||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
self.setState = function(state) {
|
self.setState = function(state) {
|
||||||
let enabled = (state && state.ocr.enabled && navigator.clipboard && !tools.browser.is_ios);
|
let enabled = (state && state.ocr.enabled && navigator.clipboard && !tools.browser.is_mobile);
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
let selected = tools.storage.get("stream.ocr.lang", state.ocr.langs["default"]);
|
let selected = tools.storage.get("stream.ocr.lang", state.ocr.langs["default"]);
|
||||||
let html = "";
|
let html = "";
|
||||||
|
|||||||
@ -372,14 +372,6 @@ export var tools = new function() {
|
|||||||
// Blink engine detection
|
// Blink engine detection
|
||||||
let is_blink = ((is_chrome || is_opera) && !!window.CSS);
|
let is_blink = ((is_chrome || is_opera) && !!window.CSS);
|
||||||
|
|
||||||
// iOS browsers
|
|
||||||
// https://stackoverflow.com/questions/9038625/detect-if-device-is-ios
|
|
||||||
// https://github.com/lancedikson/bowser/issues/329
|
|
||||||
let is_ios = (!!navigator.platform && (
|
|
||||||
/iPad|iPhone|iPod/.test(navigator.platform)
|
|
||||||
|| (navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1 && !window["MSStream"])
|
|
||||||
));
|
|
||||||
|
|
||||||
// Any browser on Mac
|
// Any browser on Mac
|
||||||
let is_mac = ((
|
let is_mac = ((
|
||||||
window.navigator.oscpu
|
window.navigator.oscpu
|
||||||
@ -391,15 +383,27 @@ export var tools = new function() {
|
|||||||
// Any Windows
|
// Any Windows
|
||||||
let is_win = (navigator && !!(/win/i).exec(navigator.platform));
|
let is_win = (navigator && !!(/win/i).exec(navigator.platform));
|
||||||
|
|
||||||
|
// iOS browsers
|
||||||
|
// https://stackoverflow.com/questions/9038625/detect-if-device-is-ios
|
||||||
|
// https://github.com/lancedikson/bowser/issues/329
|
||||||
|
let is_ios = (!!navigator.platform && (
|
||||||
|
/iPad|iPhone|iPod/.test(navigator.platform)
|
||||||
|
|| (navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1 && !window["MSStream"])
|
||||||
|
));
|
||||||
|
|
||||||
|
let is_android = /android/i.test(navigator.userAgent);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"is_opera": is_opera,
|
"is_opera": is_opera,
|
||||||
"is_firefox": is_firefox,
|
"is_firefox": is_firefox,
|
||||||
"is_safari": is_safari,
|
"is_safari": is_safari,
|
||||||
"is_chrome": is_chrome,
|
"is_chrome": is_chrome,
|
||||||
"is_blink": is_blink,
|
"is_blink": is_blink,
|
||||||
"is_ios": is_ios,
|
|
||||||
"is_mac": is_mac,
|
"is_mac": is_mac,
|
||||||
"is_win": is_win,
|
"is_win": is_win,
|
||||||
|
"is_ios": is_ios,
|
||||||
|
"is_android": is_android,
|
||||||
|
"is_mobile": (is_ios || is_android),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
self.info("Browser:", self.browser);
|
self.info("Browser:", self.browser);
|
||||||
|
|||||||
@ -362,7 +362,7 @@ function __WindowManager() {
|
|||||||
var __organizeWindowsOnBrowserResize = function() {
|
var __organizeWindowsOnBrowserResize = function() {
|
||||||
for (let el_window of $$("window")) {
|
for (let el_window of $$("window")) {
|
||||||
if (el_window.style.visibility === "visible") {
|
if (el_window.style.visibility === "visible") {
|
||||||
if (tools.browser.is_ios && el_window.classList.contains("window-resizable")) {
|
if (tools.browser.is_mobile && el_window.classList.contains("window-resizable")) {
|
||||||
// FIXME: При смене ориентации на мобильном браузере надо сбрасывать
|
// FIXME: При смене ориентации на мобильном браузере надо сбрасывать
|
||||||
// настройки окна стрима, поэтому тут стоит вот этот костыль
|
// настройки окна стрима, поэтому тут стоит вот этот костыль
|
||||||
el_window.style.width = "";
|
el_window.style.width = "";
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user