在帮助页面.htm的* .hhc文件或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文件中链接的问题。
有什么想法吗?
答案 0 :(得分:0)
路径应该相对于目录的根目录,而URL使用FORWARD斜杠。
配置文件中的所有路径都应该与文档根目录相关。因此,如果在CHM中可以看到HELP目录,则帮助的父级是文档跟踪,CHM项目的项目文件就像help / common / xxx.gif。
afaik在html文件中,网址可能是相对的,也许它会在错误的斜杠上发现。
(p.s。要查看CHM的内部结构,我使用Free Pascal中的“chmls”命令,但是iirc的一些* nix CHM查看器也显示路径)
答案 1 :(得分:0)
我有一个类似的问题,我找到了解决此问题的方法。我希望我的项目在网络共享上可用,因此我在该共享的目录中创建了* .hhp文件。我尝试了很长时间才能使HHP软件找到非常简单的HTML文件,这些文件位于HHP文件的子目录中,但没有成功。我最终在本地C驱动器上创建了HHP项目。当我这样做时,我可以从网络上的任何地方访问支持文件。将我的HTML,CSS等文件保留在共享中是我的优势,但它们可以在任何地方。唯一的缺点是,在编译项目后,您必须将* .chm文件复制到所需的位置,但这并不是主要的麻烦。您甚至可以为该作业创建一个简单的.bat文件。