yozhik

|
Posted: Thu May 07, 2026 21:46 Post subject: |
|
|
| Orion9 wrote: | | назвав его "Ключи Wincmd.ini"... в Readme.md ... его на первое место |
Сделал. (Заодно обновил и дополнил TC.Extra.html)
| CaptainFlint wrote: | | пока не имел возможности проанализировать примеры, которые тут выкладывались |
Кратко о последней реализации, которая сейчас используется в CHM по ссылке чуть выше (в этом посте).
В начало body добавляется скрипт:
| 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(/#[a-z0-9\-]+/g,'')+"#"+loc;window.scrollBy(0,-100);}</script> |
В каждую ячейку с описанием <td class="td_description"> добавляется div с маленькой кнопочкой (без надписи, только угловые скобки):
| Code: | <div class=btn><button name="10001" title="Развернуть/Свернуть описание" onclick="toggleColumn(10001)"><></button></div> |
В каждую ячейку, которая принадлежит колонке, которую нужно сворачивать, добавляется служебный класс col-hide, например:
| Code: | <td class="td_header col-hide">Секция</td>
...
<td class="td_section col-hide">Layout</td> |
В head/style добавляются стили для кнопки и скрытия ячеек:
| Code: | .hide-cols .col-hide{display:none;}
div.btn{display:block;float:right;margin-left:1em;}
button{color:#444C56;border:1px solid #444C56;border-radius:4px;cursor:pointer;padding:2px 5px;}
button:hover{color:#0075EA;border-color:#0075EA;text-shadow: 0 0 10px #80BFFF;}
button:active{background:#fff;} |
Т.е. это как раз то, о чём вы написали:
| CaptainFlint wrote: | | Реализацию скрытия можно упростить, если добавить служебных классов во все ячейки, и скрипт тогда сможет опираться на названия этих классов |
Почему у каждой кнопки уникальный якорь (name) и зачем скрипт запускается с параметром, например, toggleColumn(10001) ?
Это сделано только для работоспособности скрипта в CHM и в IE9, движок которого используется в CHM. В IE9, когда после сворачивания/разворачивания колонок кол-во строк меняется, текущая горизонтальная позиция улетает вверх или вниз. Чтобы вернуться к той ячейке, в которой была нажата кнопка, скрипт делает переход к её якорю.
Но в современных браузерах этого делать не нужно, потому что при сворачивании/разворачивании текущая горизонтальная позиция автоматически восстанавливается самим браузером. Поэтому для современных браузеров достаточно будет скрипта:
| 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';}}</script> |
и одной единственной кнопки (плавающей в правом верхнем углу окна, например) для скрытия колонок.
Если же требуется сохранить совместимость с IE9 (и с CHM, как следствие), то лучше использовать многокнопочный вариант, или реализовать выполнение условия в зависимости от браузера.
Добавлено спустя 15 минут:
Да, и ещё один момент: вообще разговор о добавлении каждому ключу уникального ID зашёл в связи с тем, чтобы можно было организовать переход к нему при помощи «window.location.hash = id;». Но поскольку с того момента мы уже организовали переход другим способом, то и насущная необходимость в ID отпадает.
Я ведь ещё думаю о том, чтобы свой сценарий по конвертации CHM не переписывать Хотя, если изменения действительно понадобятся, то перепишем и сценарий, конечно. Ну и сейчас, добавления типа «<td class="td_key" id="Layout--ButtonBar">» мой сценарий не затрагивают.
Добавлено спустя 16 минут:
| Orion9 wrote: | | Но как можно сослаться на якорь конкретного ключа? |
Для подавляющего большинства ключей имя якоря очевидно — это "<имя_секции>--<имя_ключа>" (и то, и другое смотрим в таблице). Дописываем такой якорь в конец адреса после #. А если не сработало, то открываем ячейку с ключом в Инспекторе браузера и копируем ID оттуда.
Например: https://flint-inc.ru/Temp/tcinfo-test/Russian.cedf#Packer--PackEncrypted _________________ Amo ergo sum |
|