Javascript 如何在chm中切换主题(css)并使其保持不变? 关于我

Javascript 如何在chm中切换主题(css)并使其保持不变? 关于我,javascript,css,cookies,themes,chm,Javascript,Css,Cookies,Themes,Chm,我的第一篇帖子!我是一名技术作家,偶尔会涉猎编写javascript/jQuery脚本等来完成帮助文件(chm文件)中的工作。但我很少使用它,而且我知道这样做很危险。我认为自己是JS脚本编写的初学者(也许是初学者)。p> 我想做什么 我有一个chm文件(编译的Html帮助文件),它驻留在用户的本地系统上。我的最终目标是允许用户点击chm中的链接,进行一些动态主题交换,并加载到不同的.css文件中,以获得浅/暗/经典主题。 (我在Adobe论坛上开始的这个讨论展示了我的尝试: ) 条件和工具 我

我的第一篇帖子!我是一名技术作家,偶尔会涉猎编写javascript/jQuery脚本等来完成帮助文件(chm文件)中的工作。但我很少使用它,而且我知道这样做很危险。我认为自己是JS脚本编写的初学者(也许是初学者)。p> 我想做什么 我有一个chm文件(编译的Html帮助文件),它驻留在用户的本地系统上。我的最终目标是允许用户点击chm中的链接,进行一些动态主题交换,并加载到不同的.css文件中,以获得浅/暗/经典主题。 (我在Adobe论坛上开始的这个讨论展示了我的尝试: )

条件和工具
  • 我们的用户通常无法访问互联网
  • CHM是本地的 在他们的机器上,所以任何解决方案都需要牢记这一点
  • 注意 chm文件在引擎盖下使用IE 7
  • 我们的创作工具是RoboHelp 2015年
问题 当我单击主题中的链接时,chm会正确加载不同的css样式表

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

我尝试过的事情 首先,我尝试了饼干。但从我的在线研究和个人测试来看,Cookie在chm中不起作用。不过,我已经确认它们在local.htm中工作。诀窍是如何将值返回到chm中

第二,我尝试了iframes。因为local.htm能够设置cookies,所以我在与.chm相同的文件夹中创建了一个local.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主题可能会检查“handled=true”,如果它看到它,则不会调用external.htm中查询cookie状态的函数

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

结论
我是否在寻找正确的存储和获取饼干的方法?或者,在上述条件下,是否有更好的方法来实现这一点?

此应用程序是否有助于您调用不同的CHM,或者这是一个独立的CHM?我们有一个核心CHM帮助,还有几个非核心帮助。所有CHM都位于同一目录中。非核心帮助是合并的帮助,这意味着它们可以从核心chm中访问。我的想法是在不同的chm中编译主题并进行应用程序调用-但我刚刚在Adobe论坛上看到了您的答案:“谢谢你,彼得。拥有不同版本的chm不是我们的选择。我们正在努力减少下载时的磁盘空间。在所有16种语言中复制我们的所有CHM将导致意外方向的峰值。“谢谢你调查此事。但不幸的是,这不是我们的选择。我希望有人有一些想法,我花了整整两天的时间试图解决这个问题,但没有成功。可能我们必须将帮助输出更改为本地(非编译)基于web的帮助。(这是我无论如何都想做的。)但目前我们仍坚持使用CHM作为帮助格式。@eri0o,我从未能够使它以CHM格式工作。我们最终只提供了一个单一主题的CHM文件。后来,我们切换了帮助格式;现在我们的用户有了基于HTML5浏览器的帮助。这对于支持主题更改具有更好的潜力。
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  
}