我的第一篇文章!我是一个技术作家偶尔会涉及脚本javascript / jQuery等来完成我们的帮助文件(chm文件)中的事情。但我很少使用它,并且知道足够危险。我认为自己是js脚本中的初学者(也许是高级初学者)。
我有一个chm文件(已编译的Html帮助文件),它位于用户的手中。本地系统。我的最终目标是允许用户点击chm中的链接进行一些动态主题交换,并加载一个不同的.css文件,用于浅色/深色/经典主题。 (我在Adobe论坛上开始的讨论显示了我正在尝试的内容: https://forums.adobe.com/thread/2196246)
当我单击主题中的链接时,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?或者在上述条件下有更好的方法吗?