最近在用 SuperMemo 刷卡的时候,突然觉得半屏窗口在很多时候更有用,于是习惯性的改 CSS,想实现窗口缩放的时候卡片区域机动留白,结果当然毫无悬念的失败了……
神奇的 SuperMemo
知道 SuperMemo 的渲染引擎古老,但没想到那么古老,不死心的试了各种常见的 CSS 写法:
- 用 body { max-width: 960px; } 来限制宽度……失败
- 用 BODY > * 来选中 body 下面的元素……失败
- 用 BODY P 也许能行?……失败
- @media 媒体查询?……失败
经过各种测试,基本可以证实传说中的「SuperMemo 的 HTML 组件,是在一个非常老的「IE 兼容/怪异模式」下渲染的,表现得就像 IE6-7 一样」——我觉得 IE 6 都不如——总之所有我们现在习以为常的 CSS 特性,都没法用。
神奇的 BAT
正在准备放弃的时候,灵光一闪,祖传的软件就要用祖传的方案,召唤 BAT!
实现很简单,准备两套(更多也行)CSS,使用对应的 BAT 来覆盖 CSS 后再启动 Supermemo,想用哪套就用哪套。
搞定。
@echo off
taskkill /IM sm18.exe 2>nul
echo Waiting for SuperMemo to close...
:waitForClose
tasklist | find /I "sm18.exe" >nul
if errorlevel 1 (
goto :isClosed
) else (
timeout /T 1 /NOBREAK >nul
goto :waitForClose
)
:isClosed
echo SuperMemo has been closed. Continuing...
copy /Y "%SM18_PATH%\bin\supermemo1.css" "%SM18_PATH%\bin\supermemo.css"
start "" "%SM18_PATH%\sm18.exe"