行情区全屏改为仅 F 键,并强化键盘监听
- 移除 Ctrl+空格,使用 KeyF 与多节点捕获监听 - 点击图表区域聚焦,进入行情页自动聚焦 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -795,13 +795,28 @@
|
||||
tfDigitTimer = setTimeout(commitTfDigitBuffer, TF_DIGIT_TIMEOUT_MS);
|
||||
}
|
||||
|
||||
function isChartFullscreenShortcut(e) {
|
||||
if (e.altKey || e.metaKey) return false;
|
||||
const isSpace =
|
||||
e.code === "Space" || e.key === " " || e.key === "Spacebar";
|
||||
if (isSpace && e.ctrlKey) return true;
|
||||
if ((e.key === "f" || e.key === "F") && !e.ctrlKey && !e.shiftKey) return true;
|
||||
return false;
|
||||
function isChartFullscreenKey(e) {
|
||||
if (e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) return false;
|
||||
return e.code === "KeyF" || e.key === "f" || e.key === "F";
|
||||
}
|
||||
|
||||
function onChartFullscreenKey(e) {
|
||||
if (!isMarketPageActive() || !isChartFullscreenKey(e)) return;
|
||||
if (isTypingInField(e.target)) return;
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
toggleChartFullscreen();
|
||||
}
|
||||
|
||||
function focusMarketChartArea() {
|
||||
const wrap = elChartWrap;
|
||||
if (!wrap) return;
|
||||
if (!wrap.hasAttribute("tabindex")) wrap.setAttribute("tabindex", "-1");
|
||||
try {
|
||||
wrap.focus({ preventScroll: true });
|
||||
} catch (err) {
|
||||
/* ignore */
|
||||
}
|
||||
}
|
||||
|
||||
function onMarketKeydown(e) {
|
||||
@@ -814,14 +829,6 @@
|
||||
return;
|
||||
}
|
||||
|
||||
if (isChartFullscreenShortcut(e)) {
|
||||
if (isTypingInField(e.target) && (e.key === "f" || e.key === "F")) return;
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
toggleChartFullscreen();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!canUseTfKeyboard(e)) return;
|
||||
if (e.key >= "0" && e.key <= "9") {
|
||||
e.preventDefault();
|
||||
@@ -1603,7 +1610,16 @@
|
||||
updateIndicators();
|
||||
});
|
||||
});
|
||||
const pageMarket = document.getElementById("page-market");
|
||||
const fsKeyTargets = [window, pageMarket, elChartWrap, chartHost].filter(Boolean);
|
||||
fsKeyTargets.forEach(function (el) {
|
||||
el.addEventListener("keydown", onChartFullscreenKey, true);
|
||||
});
|
||||
window.addEventListener("keydown", onMarketKeydown, true);
|
||||
if (elChartWrap) {
|
||||
if (!elChartWrap.hasAttribute("tabindex")) elChartWrap.setAttribute("tabindex", "-1");
|
||||
elChartWrap.addEventListener("mousedown", focusMarketChartArea);
|
||||
}
|
||||
if (elFsExchange) {
|
||||
elFsExchange.addEventListener("change", function () {
|
||||
syncMainFromFsToolbar();
|
||||
@@ -1643,6 +1659,7 @@
|
||||
} else {
|
||||
readQuery();
|
||||
}
|
||||
focusMarketChartArea();
|
||||
startAutoRefresh();
|
||||
await loadChart(false);
|
||||
startPriceTagTimer();
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<div id="page-market" class="page hidden">
|
||||
<div class="page-head">
|
||||
<h1><span class="head-tag">MKT</span> 行情区</h1>
|
||||
<p class="page-desc">按需拉取 K 线,本地库保留 15 天(无后台自动更新)。快捷键:<kbd>F</kbd> 或 <kbd>Ctrl</kbd>+<kbd>空格</kbd> 全屏/退出(全屏时 <kbd>Esc</kbd> 退出;Win 下 Ctrl+空格常被输入法占用,请优先用 <kbd>F</kbd>);数字键切换周期(分钟):1/5/15/60/240/1440/10080(多数字连按,如 1 再 5 为 15m)。</p>
|
||||
<p class="page-desc">按需拉取 K 线,本地库保留 15 天(无后台自动更新)。快捷键:<kbd>F</kbd> 切换 K 线全屏/退出(全屏时 <kbd>Esc</kbd> 退出);数字键切换周期(分钟):1/5/15/60/240/1440/10080(多数字连按,如 1 再 5 为 15m)。</p>
|
||||
</div>
|
||||
<details class="hint-box">
|
||||
<summary>数据说明</summary>
|
||||
@@ -112,7 +112,7 @@
|
||||
<label class="market-ind-opt"><input type="checkbox" id="market-ind-rsi" value="rsi" /> RSI</label>
|
||||
</div>
|
||||
</details>
|
||||
<button type="button" id="market-chart-fullscreen" class="ghost market-fs-btn" title="K线全屏(F 或 Ctrl+空格)">全屏</button>
|
||||
<button type="button" id="market-chart-fullscreen" class="ghost market-fs-btn" title="K线全屏(按 F)">全屏</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="market-ohlcv-row">
|
||||
@@ -240,7 +240,7 @@
|
||||
|
||||
<div id="toast"></div>
|
||||
<script src="https://unpkg.com/lightweight-charts@4.2.0/dist/lightweight-charts.standalone.production.js"></script>
|
||||
<script src="/assets/chart.js?v=20260528-hub-fs-keys2"></script>
|
||||
<script src="/assets/chart.js?v=20260528-hub-fs-f"></script>
|
||||
<script src="/assets/app.js?v=20260528-hub-tpsl-fix"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user