(在表示路径时,可能会有两种协议,这里需要做一个测定。如果说a的值是2,那么就是使用的mk:@MSITStore:协议,这个协议刚好是14个字符。否则使用的协议就是ms-its:,刚好7个字符。根据具体使用的协议来确定x的值。如果是前者,x的值就是14。否则就是7。)
sl = "\\";
Y = location.href.lastIndexOf(sl) 1;
link = 'file:///' location.href.substring(X, Y) fn;
(这就是x和y这两个变量起作用的地方,substring这个截取子字符串的语句使用x和y这两个变量在location.href中截去字符串的开始和结束部分。例如:如果location.href返回的值是ms-its:C:\dir\file.chm::/topic.htm,在截去时,如果x=7,那么最前面的7个字符就被去掉,如果y=14,那么第14个以后的字符也将被去掉。这样,结果是 C:\dir\是chm文件的跟路径,然后把字符串"file:///" 加在整个字符串的前面,最后,把目标文件的文件名(variable "fn")加在最后。)
location.href = link;
}
(最后,位置对象的路径值被存储在变量“link”中。)
完整的脚步代码是这样的:
<SCRIPT language=JScript>
function parser(fn) {
var X, Y, sl, a, ra, link;
ra = /:/;
a = location.href.search(ra);
if (a == 2)
X = 14;
else
X = 7;
sl = "\\";
Y = location.href.lastIndexOf(sl) 1;
link = 'file:///' location.href.substring(X, Y) fn;
location.href = link;
}
</SCRIPT>
在html中链接这个文件的代码是这样的:
<A onclick="parser('loremipsum.htm')" style="CURSOR: hand; TEXT-DECORATION: underline; BR>: green">Link to loremipsum.htm</A>
目标文件的文件名(在括号中的)在脚步中作为一个变量被传递(如整个例子中的“fn”)。这样的话,你可以通过同一段的脚本来,使用不同的锚点来接连不同的文件。
需要注意的是
1)在编译的时候,你需要链接的文件应该和你的chm文件在同一个目录中。
2)不能在<A>标记中使用href属性。
3)所有的锚点(链接文件的链接)的样式属性必须用手工来定义,而使锚点看起来象一个链接。(比如变成一个小手。)
4)在某些情况下,由于用户的系统的原因(比如没有安装恰当的软件。),可能会无法打开链接的文件。
现在回到那个网友的问题上来,他的问题有两个方法来解决:使用本文提供的方法,直接把swf文件链接进来。还有一个办法就是使用文章提供的查找文件的地址的方法,把不同应用情况下的文件的绝对地址找到。在html中用变量的方法来链接swf文件。