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

时间:2016-08-25 17:34:21

标签: javascript css cookies themes chm

关于我

我的第一篇文章!我是一个技术作家偶尔会涉及脚本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部分为&#34; Page不显示。&#34;

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

我可以链接到.htm文件。我可以在chm中显示它。我甚至可以向它发送参数。但是我无法将参数从它返回到chm中。例如,在此测试片段中,我只是试图查看是否可以从本地.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主题应该检查&#34; handling = true&#34;如果它看到了它,那么它就不会在查询cookie状态的外部.htm中调用该函数。

但它不起作用。 location.href = prevURL本身会重新打开调用主题但是如果我包含&#34;?handling = true&#34;部分,它说&#34;此页面无法显示&#34;。

结论

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

0 个答案:

没有答案