如何在HTMLHELP(.CHM文件)中的页面之间传递参数

时间:2014-07-16 20:29:25

标签: javascript parameters chm

我需要创建一个Windows帮助文件,其中有许多非常相似的主题,只是细节不同。我没有为每个组合创建一个页面(每个主题大约40个!),我想使用Javascript来修改细节,但我需要将参数传递给每个页面。

我尝试使用网址搜索参数:

<a href="page.htm?argument">Page</a>

这在浏览器中的标准HTML文件中很有效,即使在HTML Help Workshop中也是如此,但只要在.CHM文件中编译,我就会得到一个错误页面,说明:此页面无法显示。< / p>

我试图把&#34; page.htm?参数&#34;在.HHP中,但这也不起作用。

2 个答案:

答案 0 :(得分:0)

您添加的一些信息,例如.css或.js文件到[FILES]部分,如下所述。

帮助编译器尝试将.chm中所有直接引用的本地文件拉入.chm,无论它们是否是其他HTML文件,图形,级联样式表等。确保您的脚本文件和CSS也会编译到您的CHM中。

为了进一步确保所有图形(和* .css等级联样式表)都编译到.chm中,您可以在项目(.hhp)文件的[FILES]部分中列出它们。使用HTML Help Workshop,过程如下:

1)在HTML Help Workshop中打开项目文件。

2)单击“项目”选项卡上的“添加/删除主题文件”按钮。

3)单击“添加”。

4)在“文件名”字段中,键入* .gif(或* .jpg)。

5)单击“打开”,然后选择“例如”要添加的图形文件。

如果需要,可以使用[FILES]部分中的通配符指定给定目录中的每个文件。例如:

[FILES] HTML的* .htm 图像* .gif注意 CSS \ foobar.css

当然,您必须在文本编辑器(如记事本)中编辑项目文件才能执行此操作并再次编译。请注意,所有文件必须位于项目文件“文件夹级别”或子文件夹结构级别。

答案 1 :(得分:0)

我使用window.name属性解决了我的问题。传递两个参数:

<script>window.name = "p1=Par1;p2=Par2";</script>
<a="href=page.htm>Goto page</a>

在page.htm中:

<head>
<script language="JavaScript">
function getName(c_name) {
    var c_start,c_end;
    if (window.name.length > 0) {
        c_start = window.name.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = window.name.indexOf(";", c_start);
            if (c_end == -1) c_end = window.name.length;
            return unescape(window.name.substring(c_start, c_end));
        }
    }
    return "";
}

</script>
</head>
<body>
<H2 id="h2id"></H2>
<script>
document.getElementById("h2id").innerHTML = 'P1: '+getName("p1")+ ' P2: '+getName("p2");
</script>
</body>