如何在 chm 中进行主题 (css) 切换并使其保持不变?

问题描述 投票:0回答:1

关于我

我的第一篇文章!我是一名技术作家,偶尔会涉足 javascript/jQuery 等脚本来完成帮助文件(chm 文件)中的事情。但我很少使用它,并且知道它很危险。我认为自己是 js 脚本的初学者(也许是高级初学者)。

我想做什么

我有一个 chm 文件(编译的 Html 帮助文件)驻留在用户的本地系统上。我的最终目标是允许用户单击 chm 中的链接来进行一些动态主题交换,并加载不同的 .css 文件以获取浅色/深色/经典主题。 (我在 Adobe 论坛上开始的讨论显示了我正在尝试的内容: https://forums.adobe.com/thread/2196246

条件和工具

  • 我们的用户通常无法访问互联网。
  • Chms 是本地的 在他们的机器上,所以任何解决方案都需要考虑到这一点。
  • 请注意 chm 文件在底层使用 IE 7。
  • 我们的创作工具是 RoboHelp 2015.

问题

当我单击主题中的链接时,chm 确实会正确加载不同的 css 样式表。

但问题是,如何从 chm 文件跟踪用户的选择?这可能吗?

我尝试过的事情

首先,我尝试了饼干。但根据我的在线研究和我自己的个人测试,cookie 在 chm 中不起作用。我已经确认它们确实可以在本地 .htm 中工作。关键是如何将值返回到 chm 中?

其次,我尝试了 iframe。由于本地 .htm 能够设置 cookie,因此我在与 .chm 相同的文件夹中创建了本地 .htm。然后我尝试让 chm 引入该 .htm

这或多或少是我所做的:

var cookiefile = "cookietest.html";
var iframesrc = '<iframe src="' + cookiefile + '" frameborder="0" scrolling="no" name="myFrame" id="myFrame"></iframe>';
$("div#headercolored").append(iframesrc);

但是 chm 主题总是将 iframe 部分显示为“页面未显示”。

第三,我尝试使用脚本来定位外部文件并以这种方式发送信息。 (我以此作为指南:https://msdn.microsoft.com/en-us/library/ms644690.aspx

我可以链接到 .htm 文件。我可以在chm中显示它。我什至可以向它发送参数。但我无法将参数从它返回到 chm 中。例如,在这个测试片段中,我只是想看看是否可以将单个参数(handled 的值)从本地 .htm 页面返回到调用 chm 主题。 (最终,我会修改它以将 css 值传回。)

if (theme == 'default') {
    location.href = prevURL + '?handled=true';
    //prevURL is the chm link and looks something like this:
    //mk:@MSITStore:D:\hg\LocalTest\introtest\!SSL!\Microsoft_HTML_Help\introtest.chm::/3D_Grid.htm  
} 

上面代码的目的也是为了让我不会陷入无限循环。 chm 主题应该会检查“handled=true”,如果看到它,则不会调用外部 .htm 中查询 cookie 状态的函数。

但这不起作用。 location.href = prevURL 本身确实会重新打开调用主题,但如果我包含“?handled=true”部分,它会显示“此页面无法显示”。

结论

我是否正在寻求以正确的方式存储和获取cookie?或者考虑到上述条件,有更好的方法吗?

javascript css cookies themes chm
1个回答
0
投票

我的回答可能不是关于这个问题,但可以解决你的需求。

只需使用
zeal
而不是 chm 文档。

  • 更改为暗模式Alt+E编辑→n首选项→内容→外观(需要重新启动):Alt+D暗。

如果您的系统已设置为黑暗,那么您不需要任何操作,它会自动黑暗。希望你喜欢。

© www.soinside.com 2019 - 2024. All rights reserved.