Javascript 如何动态更改href属性
我正在尝试使用html、css和一点jquery\javascript使一个小网站可以在线和离线浏览。 因此,我使用了所有的相对路径,一切都很好,除非我在所有页面中加载一个带有一点智能jquery include的自定义菜单 但是,由于my menu.html加载在树结构的不同子目录中的不同页面中,我想知道写下菜单中不同声音的href链接的最聪明的方法是什么。 最初,我开始使用menu.html中的所有绝对路径,但当然,它只适用于在线或离线,这取决于我在绝对路径中使用的根域(或)file:///D:myfolder/etc)Javascript 如何动态更改href属性,javascript,jquery,html,css,offline-browsing,Javascript,Jquery,Html,Css,Offline Browsing,我正在尝试使用html、css和一点jquery\javascript使一个小网站可以在线和离线浏览。 因此,我使用了所有的相对路径,一切都很好,除非我在所有页面中加载一个带有一点智能jquery include的自定义菜单 但是,由于my menu.html加载在树结构的不同子目录中的不同页面中,我想知道写下菜单中不同声音的href链接的最聪明的方法是什么。 最初,我开始使用menu.html中的所有绝对路径,但当然,它只适用于在线或离线,这取决于我在绝对路径中使用的根域(或)file:///
当然,在链接开头使用/也只能在网上使用,因为在本地,/代表网站文件夹所在的驱动器号,并且只有当网站文件夹保存在最高路径(如D:/myWenbsite)时,它才会起作用。我想做一些更具适应性的东西,而不考虑本地路径 我认为最好的方法是从根目录使用相对URL。例如,在menu.html文件中,当您引用jquery时,可以执行以下操作:
/javascript/jquery.min.js
添加开头“/”使路径始终从域的根开始,无论html在目录中的什么位置
如果您使用:
javascript/jquery.min.js
这意味着在menu.html文件所在的任何目录中,都需要存在一个javascript文件夹,这通常是不需要的。在一个小脚本中使用
命令对其进行更改,解决了我的问题
以下是一个例子:
<head>
<!-- Here a direct path is need to firstly load jquery -->
<script type = "text/javascript" src = "../include/js/jquery-1.10.2.min.js"></script>
<base id="host" href="" />
<script>
/* Where am I? */
here = window.location.href;
hereIndex = here.indexOf('temp-test');
/* make substring from root till temp-test/ */
newPathname = here.substring(0, hereIndex+10); //+10 to consdier also temp-test/
$("#host").attr("href", newPathname);
</script>
</head>
/*我在哪里*/
here=window.location.href;
hereIndex=here.indexOf('temp-test');
/*从根目录生成子字符串,直到温度测试/*/
newPathname=here.substring(0,hereIndex+10)//+10至consdier温度测试/
$(“#主机”).attr(“href”,新路径名);
我不知道是否有更好的方法
无论如何,即使页面在控制台日志中正确呈现,我仍然会在我拥有的每个相对路径上获得错误file:///D:/temp-test/core/image/temp1.jpg net::ERR_FILE_未找到,但例如,此图像已正确加载。那么这上面的标签是什么?这有点让人认不出来,但它很管用
我还需要进一步调查。是的,你说的很有效,但只有当网站文件夹直接放在root like D:/myWebsite之后,如何管理文件夹保存在本地硬盘中其他子目录中的情况?我真的很感激你的帮助