在 *.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 不工作且不显示图像。目录中的文件 2 也不可访问。
用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文件中链接的问题。
有什么想法吗?
最佳答案
路径应该相对于目录的根目录,URL 使用 FORWARD 斜杠。
配置文件中的所有路径都应该相对于文档根目录。所以如果在CHM中可以看到HELP目录,那么help的父目录就是documentroot,CHM工程的工程文件如help/common/xxx.gif。
Afaik 在 html 文件中,url 可以是相对的,也许它偶然发现了错误的斜杠。
(附注:为了查看 CHM 的内部结构,我使用 Free Pascal 中的“chmls”命令,但 iirc 一些 *nix CHM 查看器也显示路径)
关于html - HTML Help Workshop 中父目录中文件的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13247937/