*.hhc 文件或帮助页面 .htm 的 html 代码中的父目录的相对路径在编译的 .chm 帮助文件中不起作用。
在本例中,file1.htm 与 *.hcc 文件位于同一目录中,而 file2.htm 位于需要通过父目录访问的其他目录中。HELP Workshop IDE 创建以下 *.hhc:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
<!-- Sitemap 1.0 -->
</HEAD><BODY>
<OBJECT type="text/site properties">
<param name="ImageType" value="Folder">
</OBJECT>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Introduction">
<param name="Local" value="file1.htm">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Topic">
<param name="Local" value="..\common\file2.htm">
</OBJECT>
</UL>
</BODY></HTML>
文件 1 的内容以这样的开头:
<html>
<head>
<title>Documentation</title>
<meta name="GENERATOR" content="Microsoft FrontPage 4.0" />
<link rel="stylesheet" type="text/css" href="..\common\webformat.css" />
<script language="JavaScript" type="text/javascript" src="..\common\WindowControl.java">
</script>
</head>
<body>
<table cols=2>
<tr>
<td align="left" valign="bottom"><h2>Overview</h2></td>
<td align="right"><img src="..\common\images\klein.gif" alt="Logo"></td>
</tr>
</table>
在已编译的 *.chm 文件中,样式表未应用,javascript 不起作用并且图像不显示。目录中的 file2 也无法访问。
用7zip解压*.chm文件可以看出,编译器将所有文件都放在了同一层,但是却保留了*.htm文件和*.hhc文件中的相对路径不变。这就是它们无法访问的原因:
帮助项目中的帮助文件夹层次结构:
Help
|-common
| |-file2.htm
| |-webformat.css
| |-WindowControl.java
| |-images
| |-klein.gif
|-private
|-file1.htm
在解压后的 *.chm 文件层次结构中:
Help
|-file1.htm
|-file2.htm
|-webformat.css
|-WindowControl.java
|-klein.gif
通过 javascript 指定所有相对路径的替代路径是一个非常不干净的解决方案。此外,它并没有解决 *.hhc 文件中的链接问题。
有任何想法吗?