| View previous topic :: View next topic |
| Author |
Message |
yozhik

Joined: 04 May 2014 Posts: 331 Location: Электросталь
|
(Separately) Posted: Sun May 03, 2026 17:52 Post subject: |
|
|
VBScript работает в CHM. Но JS всё же лучше. JS не то чтобы вообще не работает в CHM — разворачивающееся оглавление же в справочниках работает, а оно на JS — но работает с ограничениями. Orion9, быть может попробовать дать деревянному солдату команду «чтобы работало в IE» или сразу «в CHM»? Вы же опытный Урфин Джюс, а я не Урфин Джюс вообще
Если получится сделать работоспособное в CHM переключение на JS, то можно было бы его вставить в каждую ячейку Description в виде маленькой кнопочки [<>]. Тогда и кол-во столбцов можно было бы учесть и для верхних таблиц использовать одну ф-цию, а для нижних — другую. Расставить кнопки по ячейкам — минутное дело при помощи регулярок. А хоткей не использовать совсем. Я не против хоткея, но чем проще код, тем больше шансов, что он заведётся в CHM.
Для лучшего понимания — вот это в CHM сейчас работает исправно:
| Code: | <script type="text/javascript">function toggleBlock(e){var l=document.getElementById(e+"-data"),s=document.getElementById(e+"-toggler");"none"==l.style.display?(l.style.display="block",s.className="shown"):(l.style.display="none",s.className="hidden")}</script>
<span id="keys-contents-toggler" class="hidden" onclick="javascript:toggleBlock('keys-contents');"></span><a href="#keyslist">Список ключей</a> |
_________________ Amo ergo sum |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1085
|
(Separately) Posted: Sun May 03, 2026 20:48 Post subject: |
|
|
| Avada wrote: | | Локальный файл изменяться не может, поскольку предусмотрено в т.ч. его скачивание "как есть". |
Да. Понятно.
| yozhik wrote: | | а я не Урфин Джюс вообще |
Так ведь надо им становиться! Тем более, что ничего сложного в общении с ИИ нет. Он, конечно, иногда болванится, но в целом радует вменяемым кодом и полезными советами.
А вообще, вы гений! Я, конечно, и раньше игрался с болваном, но так чтобы рубануть его прямо в лоб не догадался бы, а зря!
 why does the following code not work in chm or ie? | Code: | onclick="toggleColumn()">Показать/Скрыть колонку (Alt+H)</button>
<script type="text/javascript">
function toggleColumn() {
// Просто включаем/выключаем класс на таблице
document.body.classList.toggle('hide-cols');
}
document.addEventListener('keydown', function(event) {
// Например, переключаем по нажатию Alt + H (Hide)
if (event.altKey && event.code === 'KeyH') {
event.preventDefault(); // чтобы не сработали системные функции
toggleColumn();
}
});
</script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style type="text/css">
/*.hide-cols td:nth-child(1),*/
.hide-cols td:nth-child(2),
.hide-cols td:nth-child(3),
.hide-cols td:nth-child(4),
.hide-cols td:nth-child(5),
.hide-cols td:nth-child(6) |
 Ответ | Code: | Основная причина в том, что формат CHM использует движок Internet Explorer (часто в режиме совместимости с очень старыми версиями), который не поддерживает современные стандарты JavaScript.Вот три критические ошибки в вашем коде для этих сред:⚠️ Почему это не работаетclassList: Свойство classList.toggle появилось только в IE10. В более старых версиях (или в CHM) оно просто не существует.event.code: Свойство 'KeyH' — это стандарт современного JS. Старый IE понимает только event.keyCode (числовой код клавиши).addEventListener: В совсем древних версиях IE (до 9-й) использовался attachEvent.✅ Исправленный код (совместимый с CHM и старым IE)Этот вариант будет работать везде, включая старые файлы справок:javascriptfunction toggleColumn() {
var body = document.body;
// Заменяем classList.toggle на проверку строки className
if (body.className.indexOf('hide-cols') !== -1) {
body.className = body.className.replace('hide-cols', '').trim();
} else {
body.className += ' hide-cols';
}
}
// Используем старый способ отлова клавиш
document.onkeydown = function(e) {
e = e || window.event;
// 72 — это код клавиши H
if (e.altKey && e.keyCode === 72) {
if (e.preventDefault) e.preventDefault(); else e.returnValue = false;
toggleColumn();
}
};
Используйте код с осторожностью.💡 Важные советы для CHM:Режим рендеринга: Добавьте этот тег в <head>, чтобы заставить CHM использовать более современный движок (если он установлен в системе):<meta http-equiv="X-UA-Compatible" content="IE=edge">CSS: Псевдоселектор :nth-child работает только в IE9+. Если вам нужна поддержка еще более старых версий, придется циклом проходить по строкам таблицы в JS и менять display у конкретных td.Хотите, я помогу переписать CSS-часть, чтобы она гарантированно работала даже в самых старых версиях справочников? |
 Hidden text | Code: | Чтобы CSS гарантированно работал в старых движках (IE6–8), которые часто встречаются в CHM, нужно отказаться от :nth-child. Старые версии IE этот селектор просто игнорируют.Единственный надежный способ — добавлять классы конкретным ячейкам.1. Измените HTMLДобавьте класс (например, col-hide) всем ячейкам (th и td), которые нужно скрывать.html<table>
<tr>
<th>Постоянная колонка</th>
<th class="col-hide">Скрываемая 1</th>
<th class="col-hide">Скрываемая 2</th>
</tr>
<tr>
<td>Данные</td>
<td class="col-hide">Скрыто 1</td>
<td class="col-hide">Скрыто 2</td>
</tr>
</table>
Используйте код с осторожностью.2. Используйте простой CSSВместо сложных селекторов используем каскад. Если у body есть класс hide-cols, то элементы с классом col-hide исчезают.css/* Этот синтаксис понимают абсолютно все версии IE */
.hide-cols .col-hide {
display: none;
}
Используйте код с осторожностью.3. Скрипт (адаптированный под старый IE)Для полноты картины используем максимально совместимый JS, который мы обсуждали ранее:javascriptfunction toggleColumn() {
var b = document.body;
// Простая проверка наличия класса в строке className
if (b.className.indexOf('hide-cols') !== -1) {
b.className = b.className.replace('hide-cols', '').trim();
} else {
b.className += ' hide-cols';
}
}
// Назначаем горячую клавишу Alt+H
document.onkeydown = function() {
var e = window.event; // Особенности старого IE
if (e.altKey && e.keyCode === 72) {
e.returnValue = false; // Отмена системного действия
toggleColumn();
}
};
Используйте код с осторожностью.Почему это лучше для CHM?Совместимость: Классы и обычный каскад .class1 .class2 работают со времен IE4.Производительность: Движку старого IE гораздо проще скрыть элементы по классу, чем высчитывать «каждый пятый элемент в строке» через :nth-child.Надежность: В CHM часто включен «режим совместимости», который ломает любой современный CSS3.У вас большая таблица, или вы можете быстро проставить классы в HTML вручную? |
В общем, я проверил оба варианта. Оба работают в плагине HTMLView! Первый такой
| Code: | <html>
<head><meta http-equiv="X-UA-Compatible" content="IE=edge">
<button onclick="toggleColumn()">Показать/Скрыть колонку (Alt+H)</button>
<script type="text/javascript">
function toggleColumn() {
var body = document.body;
// Заменяем classList.toggle на проверку строки className
if (body.className.indexOf('hide-cols') !== -1) {
body.className = body.className.replace('hide-cols', '').trim();
} else {
body.className += ' hide-cols';
}
alert("Привет! Я уведомление.");
}
// Используем старый способ отлова клавиш
document.onkeydown = function(e) {
e = e || window.event;
// 72 — это код клавиши H
if (e.altKey && e.keyCode === 72) {
if (e.preventDefault) e.preventDefault(); else e.returnValue = false;
toggleColumn();
}
};
</script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style type="text/css">
/*.hide-cols td:nth-child(1),*/
.hide-cols td:nth-child(2),
.hide-cols td:nth-child(3),
.hide-cols td:nth-child(4),
.hide-cols td:nth-child(5),
.hide-cols td:nth-child(6) {
display: none;
} |
Второй без X-UA-Compatible работает только на поовину, но тогда придется отказаться от td:nth-child и откатиться на скрытие полей по классу, как в VBScript, с вытекающей проблемой скрытия заголовков.
| Code: | <html>
<head><meta http-equiv="X-UA-Compatible" content="IE=edge">
<button onclick="toggleColumn()">Показать/Скрыть колонку (Alt+H)</button>
<script type="text/javascript">
function toggleColumn() {
var body = document.body;
// Заменяем classList.toggle на проверку строки className
if (body.className.indexOf('hide-cols') !== -1) {
body.className = body.className.replace('hide-cols', '').trim();
} else {
body.className += ' hide-cols';
}
alert("Привет! Я уведомление.");
}
// Используем старый способ отлова клавиш
document.onkeydown = function(e) {
e = e || window.event;
// 72 — это код клавиши H
if (e.altKey && e.keyCode === 72) {
if (e.preventDefault) e.preventDefault(); else e.returnValue = false;
toggleColumn();
}
};
</script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style type="text/css">
td {
border-style: solid;
border-width: 1px;
vertical-align: top;
padding: 8px;
}
.td_header {font-weight: bold; background-color: #A3E4A3; color: #000;border-style: solid;border-width: 1px 1px 1px 0; border-color: #000;}
.td_key {background-color: #FFF7E8; color: #000; border-style: solid;border-width: 0 1px 1px 1px;padding: 8px;}
.td_file {background-color: #fff; border-width: 0 1px 1px 0;padding: 8px;}
.td_section {background-color: #fff; border-width: 0 1px 1px 0;padding: 8px;}
.td_version {background-color: #fff; border-width: 0 1px 1px 0;padding: 8px;}
.td_default {background-color: #fff; border-width: 0 1px 1px 0;padding: 8px;}
.td_advanced {background-color: #fff; border-width: 0 1px 1px 0;padding: 8px;}
.td_description {background-color: #FFF7E8; border-width: 0 1px 1px 0;padding: 8px;}
.keyscount {font-size: 0.8em;}
a:link {text-decoration:none;}
a:visited {text-decoration:none;}
a:hover {text-decoration:underline;}
a:active {text-decoration:underline;}
.hidden, .shown {
cursor: pointer;
margin-right: 0.5em;
}
.hide-cols .td_header { display: none; }
.hide-cols .td_file { display: none; }
.hide-cols .td_section { display: none; }
.hide-cols .td_version { display: none; }
.hide-cols .td_default { display: none; }
.hide-cols .td_advanced { display: none; }
|
Ну, и оба варианта работают без Alt + H в плагине. Но что-то мне подсказывает, что это дело в самом плагине, там надо искать.
Можете потдвердить работоспособность кода, как будет возможность? |
|
| Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 331 Location: Электросталь
|
(Separately) Posted: Sun May 03, 2026 23:43 Post subject: |
|
|
Ну, вот так работает и в CHM, и в HTMLView, и на Win 7 (Pro SP1 x64 2018.08 )
https://dropmefiles.com/yuV4G
(обменник перепаковывает архив с паролем 123 — прошу прощения, это не я).
Только остался один существенный недостаток: поскольку колонки сворачиваются во всех таблицах, строки улетают, и чем ближе к концу файла, тем разница существенней. Вариант решения мне представляется таким. Каждой ячейке Descritpion присваиваем якорь или ID — это я умею (надеюсь), а при вызове ф-ции сворачивания передаём этот якорь или ID параметром, например:
| Code: | <td class="td_description"><a name="1234"></a><button onclick="toggleColumn(1234)"><></button> |
Нужно в ф-ции toggleColumn дописать переход к якорю. А это я не умею
meta http-equiv="X-UA-Compatible" content="IE=edge" у меня в CHM с самого начала был — без этой директивы CSS плохо работает. Но я всё равно выбрал вариант без :nth-child — для нас сейчас чем топорней, тем надёжней, пмсм.
Нет, это не я. Гений — это Игорь Северянин. _________________ Amo ergo sum |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1085
|
(Separately) Posted: Mon May 04, 2026 00:20 Post subject: |
|
|
yozhik
чЁтко получилось Мне нравится. Очень нравится!
| yozhik wrote: | | Только остался один существенный недостаток: поскольку колонки сворачиваются во всех таблицах, строки улетают, и чем ближе к концу файла, тем разница существенней. |
Да, я писал об этой проблеме. Реально обламывает.
| yozhik wrote: | | Но я всё равно выбрал вариант без :nth-child — для нас сейчас чем топорней, тем надёжней, пмсм. |
А может быть все-таки попробовать с :nth-child? Там меньше улетает позиция, почти и не видно, и с якорями не придется заморачиваться. Ну а если ничего не получится, будем дальше думать, только уже на свежую голову )
| yozhik wrote: | | Нет, это не я. Гений — это Игорь Северянин. |
Ладно, уговорили. Вы — нормальный, как и я, и все мы  |
|
| Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10509 Location: Россия, Саратов
|
(Separately) Posted: Mon May 04, 2026 06:58 Post subject: |
|
|
yozhik
В HTMLView и MarkdownView на Windows 7 SP1 у меня переключение не работает. В браузере — да. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
| Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 331 Location: Электросталь
|
(Separately) Posted: Mon May 04, 2026 10:42 Post subject: |
|
|
Avada
Первым шагом давайте, пожалуйста, сравним наши настройки плагинов. Поскольку MarkdownView сконструирован на основе HTMLView, вся базовая часть настроек у них общая. Вот мой MarkdownView.ini:
https://disk.yandex.ru/d/V6O6jhr5S3SXMA _________________ Amo ergo sum |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1085
|
(Separately) Posted: Mon May 04, 2026 12:25 Post subject: |
|
|
yozhik
Там по сути только два ключа могут играть роль, как мне кажется
| Code: | ; Set to 1 to allow scripts execution
AllowScripting=1
;
; Set to 1 to allow Java applets to execute
AllowJava=1 |
| yozhik wrote: | | Нужно в ф-ции toggleColumn дописать переход к якорю. А это я не умею |
Не игнорируйте болвана — он все умеет.
 how do i go to an anchor in JS? | Code: | Для перехода к якорю (anchor) в JavaScript есть несколько способов, от классических до современных с плавной анимацией.1. Самый надежный (совместим с CHM и старым IE)Этот метод просто меняет хеш в адресной строке, и браузер мгновенно перепрыгивает к элементу с соответствующим id или name.javascriptwindow.location.hash = 'myAnchor'; // Перейдет к <a id="myAnchor"> или <a name="myAnchor">
Используйте код с осторожностью.2. С помощью метода scrollIntoView (Современный)Позволяет сделать переход более гибким. Работает в большинстве современных браузеров (Chrome, Firefox, Edge, IE11).javascriptvar element = document.getElementById("myAnchor");
element.scrollIntoView();
Используйте код с осторожностью.Если хотите плавный скролл (не работает в старых IE/CHM):javascriptelement.scrollIntoView({ behavior: 'smooth' });
Используйте код с осторожностью.3. Как сделать это в вашем CHM-проекте?Поскольку мы боремся за совместимость со старым движком IE, лучше всего использовать location.hash.Пример функции для кнопки:html<button onclick="goToSection('part2')">Перейти к разделу 2</button>
<script type="text/javascript">
function goToSection(id) {
var el = document.getElementById(id);
if (el) {
window.location.hash = id;
} else {
alert("Секция не найдена!");
}
}
</script>
<!-- Где-то ниже в коде -->
<h2 id="part2">Раздел 2</h2>
Используйте код с осторожностью.💡 Важные нюансы для CHM:ID vs Name: В совсем древних версиях IE якоря лучше работают через тег <a> с атрибутом name: <a name="myAnchor"></a>.Смещение: Если у вас есть фиксированная шапка (header), переход по якорю может «закинуть» заголовок под нее. В этом случае лучше использовать window.scrollBy(0, -50) после перехода.Нужно ли нам объединить это с вашей функцией скрытия колонок (например, чтобы после скрытия фокус возвращался в начало таблицы)? Пишите, если нужен готовый кусок кода! |
Но у меня через тег <a> с атрибутом name почему-то не сработало. Зато сработало через id. Сначала скрипт
 Hidden text | Code: | <script type="text/javascript">function toggleBlock(e){var l=document.getElementById(e+"-data"),s=document.getElementById(e+"-toggler");"none"==l.style.display?(l.style.display="block",s.className="shown"):(l.style.display="none",s.className="hidden")}</script>
<script type="text/javascript">function toggleColumn(id) {var body = document.body;if (body.className.indexOf('hide-cols') !== -1) {body.className = body.className.replace('hide-cols', '').trim();} else {body.className += ' hide-cols';
var el = document.getElementById(id);
if (el) {
window.location.hash = id;
} else {
alert("Секция не найдена!");
}
} }</script>
|
Два первых ключа
 Hidden text | Code: | <td class="td_key">ButtonBar</td>
<td class="td_file col-hide">Wincmd.ini</td>
<td class="td_section col-hide">Layout</td>
<td class="td_version col-hide">3.00+</td>
<td class="td_default col-hide">1</td>
<td class="td_advanced col-hide">---</td>
<td class="td_description" id="1234"><button onclick="toggleColumn('1234')"><></button><br>Управляет отображением главной (горизонтальной) панели инструментов:<br> 1 (по умолчанию): отображать;<br> 0: скрывать.<br><br><br>ПРИМЕЧАНИЯ:<br><br>Ключи этой подкатегории отвечают за отображение/скрытие компонентов основного окна TC (кроме заголовка, главного меню и файловых панелей), описываемых в порядке следования (сверху вниз), таков же порядок соответствующих опций на странице настроек "Вид окна". (Опции иного предназначения рассматриваются в других подкатегориях.)<br><br>В TC по умолчанию имеются две панели инструментов — главная, горизонтальная (ниже строки главного меню) и вспомогательная, вертикальная (между файловыми панелями). Каждая такая панель содержит некоторое количество кнопок для запуска команд/программ, навигации, открытия в различном виде других панелей инструментов и т.д. В английском интерфейсе TC введено понятие "button bar" (буквально — "панель кнопок"), однако в русском переводе используется более традиционный и употребительный термин.<br><br>Можно скрыть главную панель инструментов, привязав постоянную (загружаемую по умолчанию) панель к файлу no.bar, входящему в дистрибутив TC (см. в подкатегории "Интерфейс программы" — "Панели инструментов" — "Главная панель" ключ Buttonbar из одноимённой секции, лишь по названию совпадающий с ключом ButtonBar в секции [Layout]). Однако механизм скрытия там иной: функция сохранена, а в текущем файле просто нет ничего, что можно отобразить.<br><br><br>ПОЯСНЕНИЯ ПО ТАБЛИЧНОМУ ПРЕДСТАВЛЕНИЮ КЛЮЧЕЙ И СЕКЦИЙ:<br><br>Интерфейс Ultra TC Configuration Editor позволяет получить информацию о ключах и секциях из основных INI-файлов TC с помощью т.н. атрибутов, записанных в файлах данных программы-редактора. Виды атрибутов и их предназначение подробно пояснены в справке Ultra TC Editors. Ключи и секции распределены в файле данных по категориям разной степени вложенности. Корневым в этой структуре, отображаемой в окне Configuration Editor в виде дерева, является элемент "Настройки Total Commander", а все прочие элементы можно считать вложенными категориями (подкатегориями). Ссылки на другие ключи или секции могут даваться в описаниях как с указанием соответствующей цепочки подкатегорий, так и без него. В Configuration Editor для поиска имён, описаний и значений ключей имеется специальный диалог, открываемый в т.ч. клавишами CTRL+F, а при табличном представлении ключей и секций (например, через веб-браузер или плагин HTMLView/MarkdownView) работает стандартный поиск по странице, в т.ч. с помощью тех же клавиш.<br><br>При просмотр файла данных в табличном виде атрибуты отображаются в колонках с заголовками, взятыми из текущего файла style.xsl. Для ключей почти все они (кроме "Description") повторяют в оригинальном англоязычном XSL-файле имена атрибутов из используемых в указанном редакторе подкатегорий для стабильных секций INI-файла с предопределёнными именами ключей. Русскоязычные заголовки колонок добавлены из модифицированного файла style.xsl и означают следующее:<br><br>Ключ — Имя ключа (атрибут "name)".<br><br>Файл — INI-файл TC с ключом (атрибут "file"). Значение — wincmd.ini либо wcx_ftp.ini (или же их аналоги с другими именами — например, при запуске файла totalcmd.exe/totalcmd64.exe с параметрами командной строки /i и/или /f). Перенос (редирект) секций при табличном представлении файлов данных не учитывается, местоположение ключа всегда привязывается к исходному INI-файлу.<br><br>Секция — имя секции, содержащей ключ (атрибут "section"), записанное без квадратных скобок либо как переменная [%Screen_Resolution%] (для загрузки зависящих от разрешения экрана секций, с именем, например, [1024x768 (8x16)]; переменная в таблице не будет заменена актуальным именем секции).<br><br>Версия — информация о том, в какой версии TC появился ключ (атрибут "version"); последующие его модификации (порой весьма радикальные) не учитываются.<br><br>Умолчание — значение ключа по умолчанию (атрибут "default"). Иногда используется условный заменитель значения по умолчанию, а если их несколько, указывается наиболее востребованный вариант.<br><br>Расширенный — информация о том, можно ли задать/изменить значение ключа только через стандартные диалоги и меню TC (атрибут "advanced") или требуется его ручная правка. Значение Yes подразумевает расширенный режим правки, когда все или некоторые значения ключа надо задавать вручную. Прочерк означает, что все до единого значения данного ключа можно задать не вручную, а через интерфейс TC.<br><br>Описание — информация о предназначении ключа, соответствующая не атрибуту, а специальному элементу — редактируемому пользовательскому тексту, сохраняемому в файле данных как содержимое тега "description".<br><br>Несколько меньший набор заголовков используется при описании целых секций, не имеющих постоянного названия и/или не содержащих стабильного набора ключей (это, например, параметры настроенных FTP-соединений, списки подключённых плагинов, содержимое пользовательских меню, используемые шаблоны и т.д.). Первым для секции следует заголовок "Имя", а заголовки "Файл", "Версия" и "Описание" означают примерно то же, что и одноимённые элементы таблиц для ключей.<br><br>Табличные описания целых секций из разных подкатегорий выстраиваются по порядку своего вхождения в файл данных и располагаются отдельно после всех таблиц с ключами. В общих названиях таблиц для секций из-за специфики их обработки отсутствуют имена подкатегорий низшего уровня, непосредственно содержащих наборы ключей. Для каждой такой секции единым текстовыми блоками даны общие описания ключей, которые могут там находиться. Увидеть полную структуру категорий и реальное содержимое текущих INI-файлов TC можно только в интерфейсе Configuration Editor. Происхождением этих таблиц объясняется и то, что в описаниях ключей могут упоминаются некоторые собственные функции Configuration Editor, не имеющие отношения к интерфейсу Total Commander (например, клавиши CTRL+B для открытия из редактора дополнительных диалогов или имеющийся у ряда ключей цветовой индикатор).<br><br>В онлайновом варианте таблиц доступны дополнительные удобства. В частности, вместо последовательного поиска по всей странице клавишами CTRL+F и т.д. можно сразу перейти в нужную подкатегорию, выбрав её в выпадающем списке ключей или секций, открываемом кнопкой с плюсом. Для каждой такой подкатегории в адресной строке браузера после базового адреса таблицы добавляется следом за символом решётки (#) уникальный текстовый идентификатор. Используя такой формат адреса, можно давать (в т.ч. на форумах) ссылки не на справочник в целом, а сразу на нужную его часть. Если в веб-браузере по такой ссылке первоначально открывается (как в Firefox) не искомая подкатегория, а весь справочник, то для правильного перехода следует затем нажать клавишу ENTER в адресной строке браузера.<br><br><br>Значение ключа можно изменить на странице настроек "Вид окна". Аналогичной функциональностью обладает встроенная команда cm_VisButtonBar — обычно с изменением ключа, но если к числовому параметру 0..2 прибавить 4, то эффект будет временным, без изменений в INI-файле.</td>
</tr>
<tr>
<td class="td_key">ButtonBarVertical</td>
<td class="td_file col-hide">Wincmd.ini</td>
<td class="td_section col-hide">Layout</td>
<td class="td_version col-hide">9.00+</td>
<td class="td_default col-hide">1</td>
<td class="td_advanced col-hide">---</td>
<td class="td_description" id="1235"><button onclick="toggleColumn('1235')"><></button><br>Управляет отображением вертикальной панели инструментов:<br> 1 (по умолчанию): отображать;<br> 0: скрывать.<br><br><br>ПРИМЕЧАНИЯ:<br><br>Вертикальная панель инструментов обычно находится между файловыми панелями, а если они расположены одна над другой, то в правой части основного окна TC.<br><br>Можно скрыть вертикальную панель инструментов, привязав постоянную (загружаемую по умолчанию) панель к файлу no.bar, входящему в дистрибутив TC (см. в подкатегории "Интерфейс программы" — "Панели инструментов" — "Вертикальная панель" ключ Buttonbar из секции ButtonbarVertical, лишь по названию совпадающий с ключом ButtonBar в секции [Layout]). Однако механизм скрытия там иной: функция сохранена, а в текущем файле просто нет ничего, что можно отобразить.<br><br><br>Значение ключа можно изменить на странице настроек "Вид окна", а также командой "Скрыть вертикальную панель инструментов" в контекстном меню вертикальной панели или, соответственно, командой "Показать вертикальную панель инструментов" в контекстном меню разделителя файловых панелей. Аналогичной функциональностью обладает встроенная команда cm_VisButtonBar2 — обычно с изменением ключа, но если к числовому параметру 0..2 прибавить 4, то эффект будет временным, без изменений в INI-файле.</td> |
Твою-ж материю! Кажись, работает! Ну, болван... опять сделал мой день
 P.s. Кстати, на инглиш в запросах не обращайте внимание. Это я так с ним играюсь |
|
| Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10509 Location: Россия, Саратов
|
(Separately) Posted: Mon May 04, 2026 13:23 Post subject: |
|
|
yozhik
Orion9
Спасибо, всё прояснилось. В INI обоих плагинов должна быть строка AllowScripting=1, а у меня был 0. О чём, собственно, выше и сказано. Изменение AllowJava у меня на эту функцию не влияет. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
| Back to top |
|
 |
nemo9

Joined: 14 Apr 2026 Posts: 3
|
(Separately) Posted: Mon May 04, 2026 15:18 Post subject: |
|
|
| Orion9 wrote: | | Хотелось бы еще шрифт другой |
Я решил эту проблему удалив/закомментировав все теги типа:
| Code: | font-family: 'Segoe UI Semibold'; |
При таком подходе браузер использует шрифт установленный по умолчанию (а он, как правило, уже настроен под личные предпочтения).
Не знаю, как это будет выглядеть в плагине просмотровщика, т.к. принципиально использую для HTML - браузер. Полагаю, в настройках плагина должно быть указание шрифта по умолчанию. Ну, или вручную менять содержимое всех тегов font-family |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1085
|
(Separately) Posted: Mon May 04, 2026 18:43 Post subject: |
|
|
Avada
Хорошо, что так. Я был склонен думать, что проблема где-то глубже в системе, и что вам придется намного сложнее ее выявлять. Хотя, как показывает практика, сейчас можно в лоб у ИИ-шки спросить "Почему у меня не работает JavaScript на компе", от до чего дожили то )
yozhik
В скрипте есть косяк, я его не сразу заметил. Не в том месте фигурная скобка оказалась после вставки (мой косяк). Из-за этого переход работал глючно. Исправленная версия
| Code: | <script type="text/javascript">function toggleColumn(id) {var body = document.body;if (body.className.indexOf('hide-cols') !== -1) {body.className = body.className.replace('hide-cols', '').trim();} else {body.className += ' hide-cols';}
var el = document.getElementById(id);
if (el) {
window.location.hash = id;
} else {
alert("Секция не найдена! " + id);
}
}</script> |
Так все работает. Но вот что я не пойму, почему name не хочет работать. Ставлю <a id="id1234"> работает. Ставлю <a name="id1234"> не работает. Чудеса и немцы.
nemo9
Понятно. Но я сейчас ориентируюсь на CHM от yozhik. Думаю, мы завершим это дело. Ведь поклёв уже пошёл, осталось только немного потянуть и вытащить мечту наружу  |
|
| Back to top |
|
 |
BeTeP

Joined: 31 Mar 2005 Posts: 135 Location: Санкт-Петербург
|
(Separately) Posted: Mon May 04, 2026 19:02 Post subject: |
|
|
| Orion9 wrote: | | Но вот что я не пойму, почему name не хочет работать. Ставлю <a id="id1234"> работает. Ставлю <a name="id1234"> не работает. Чудеса и немцы. |
Orion9, если у "болвана" спросить, то получаем что-то типа этого:
| Quote: | Для создания якорных ссылок в современном HTML (HTML5) следует использовать <a id="anchor">. Атрибут id обеспечивает уникальный идентификатор элемента на странице, который используется для CSS, JS и якорных ссылок. Устаревший name заменен на id в XHTML и HTML5 для ссылок, тогда как name используется в основном для передачи данных форм на сервер.
Основные отличия:
• <a id="target"> (Рекомендуется): Это глобальный атрибут, уникальный для всей страницы. Подходит для создания якорей (URL с #).
• <a name="target"> (Устарело): Ранее использовался для якорей, теперь предпочтителен только в тегах <form>, <a> (в контексте name), <input> и т.д. для отправки данных.
|
_________________ «The Truth Is Out There» |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1085
|
(Separately) Posted: Mon May 04, 2026 19:33 Post subject: |
|
|
BeTeP
Просто он ранее советовал
| Code: | Важные нюансы для CHM:ID vs Name: В совсем древних версиях IE якоря лучше работают через тег <a> с атрибутом name: <a name="myAnchor"></a> |
а мы вроде как с yozhik негласно договорились придерживаться максимальной обратной совместимости, вплоть до IE4! (шутка)
Хорошо, что у него Win7 есть под рукой. Если с id будет работать, то норм, какая разница. Хотя наверняка найдутся те, кто и для ХРюши будет требовать совместимость  |
|
| Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 331 Location: Электросталь
|
(Separately) Posted: Mon May 04, 2026 19:42 Post subject: |
|
|
Orion9, я сделал с name
| Code: | window.location = window.location.toString().replace(/#[0-9]+/g, '') + "#" + loc; |
Всё вместе так:
| Code: | <script type="text/javascript">function toggleColumn(loc) {var body = document.body;if (body.className.indexOf('hide-cols') !== -1) {body.className = body.className.replace('hide-cols', '').trim();} else {body.className += ' hide-cols';} window.location = window.location.toString().replace(/#[0-9]+/g, '') + "#" + loc; }</script> |
Работает. Сделал ещё подгрузку внешнего CSS, в котором можно настраивать шрифты — заготовка была, но надо было переписать, чтобы имя CSS наследовалось из имени CHM. Осталось только собрать и причесать. Отвлекли нежданчики )) Как только доделаю, сразу здесь напишу.
Добавлено: XP тоже есть на виртуалке. Можно будет и там проверить. _________________ Amo ergo sum |
|
| Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 1085
|
(Separately) Posted: Mon May 04, 2026 21:27 Post subject: |
|
|
| yozhik wrote: | | Всё вместе так: |
Я ничего не понял, но главное чтобы оно работало
| yozhik wrote: | | Как только доделаю, сразу здесь напишу. |
Окей. Ждемс )
Добавлено спустя 2 часа 19 минут:
Avada
А последний релиз ТС, который вот-вот состоится, много затронет изменений в справочнике по ключам? Как долго ждать обновлений, если навскидку?
Я не знаю, будет ли CaptainFlint делать обновления на сайте, но вообще не помешало бы добавить якоря ко всем ключам в справочнике для более удобной работы с ним.
Например, сейчас такой якорь приводит в раздел интерфейса программы и вкладок папок
https://flint-inc.ru/tcinfo/Russian.cedf#keys-ui-folder-tabs
Но можно сделать, как yozhik, и присвоить ID каждому ключу. Тогда если у ключа "DarkBackground", допустим, ID=567, то ссылка
https://flint-inc.ru/tcinfo/Russian.cedf#567
будет приводить точно к этому ключу. Может быть удобно для отсылки к справочнику или каких-то других целей. ID, конечно, может быть любым, не обязательно цифровым. |
|
| Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 331 Location: Электросталь
|
(Separately) Posted: Tue May 05, 2026 00:18 Post subject: |
|
|
Готов 2й тестовый вариант:
https://dropmefiles.com/wp4Nz
(пароль на распаковку: 123)
На Windows 7 работает. На XP SP3 x86 — нет, точнее работает только сворачивание, а при разворачивании ругается на неподдерживаемый метод объекта, т.е. для XP надо ещё упрощать код.
Чего доделал:
-- Кнопки теперь выровнены по правому краю, со стилем, есть всплываха с подсказкой при наведении курсора.
-- При нажатии содержимое окна чуть дёргается — это мы так переходим к якорю и ещё проматываем 100 пикселей вверх, чтобы лучше смотрелось.
-- В CSS файле настраиваем шрифты для показа в CHM. Помимо гарнитуры можно и размер указать и чего угодно, главное в конце правила добавлять команду !important . Имя CSS должно быть таким же, как и у CHM. Сейчас у 1156t2_.css в конце имени подчёркивание — убрать его и CSS заработает. Если кто CHM переименует, переименовывайте и CSS тем же именем и будет работать. Только кириллицу в имени пока не тестировал.
Чего заметил:
В современных браузерах (пробовал в хромоклоне Vivaldi и в Edge) городить перемещение к якорю не нужно — при скрытии/показе колонок текущая строка остаётся на месте, не улетает. _________________ Amo ergo sum |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|