如何动态更改href属性

时间:2015-05-06 15:00:47

标签: javascript jquery html css offline-browsing

我正在尝试使用html,css和一些jquery \ javascript来在线和离线浏览一个小网站。 因此,我正在使用所有相对路径,一切正常,除非我遇到问题,在我的所有页面中加载一个自定义菜单,并带有一些智能jquery包含。

然而,因为我的menu.html被加载到位于树结构的不同子目录中的不同页面中我想知道在菜单中写下不同声音的href链接的最聪明方法是什么。

我最初开始使用menu.html中的所有绝对路径,但当然它只能在线上离线,这取决于我在绝对路径中使用的根域(http://mywebsite.com/ }或file:/// D:myfolder / etc)。

当然也使用链接开头的/只能在线工作,因为本地/代表放置网站文件夹的驱动器号,当且仅当网站的文件夹保存在像D:/ myWenbsite这样的最高路径。无论当地的道路如何,我都想做一些更具适应性的事情。

2 个答案:

答案 0 :(得分:2)

我认为最好的方法是使用root中的相对URL。例如,在引用jquery时,在menu.html文件中,您可以执行以下操作:

/javascript/jquery.min.js

添加开头'/'使得路径始终从域的根开始,无论您的目录中的html位于何处。

如果您使用:

javascript/jquery.min.js

这意味着在您的menu.html文件所在的目录中,javascript的文件夹也需要存在,而且通常不需要。

答案 1 :(得分:0)

在一个小脚本中使用<base>命令来改变它解决了我的问题。

以下是一个例子:

<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>

不知道是否有更好的方法。

无论如何,即使页面在控制台日志中正确呈现,我仍然会在每个相对路径上出现错误 GET file:///D:/temp-test/core/image/temp1.jpg net::ERR_FILE_NOT_FOUND但是,例如,此图像正确加载。那么基础标签到底有什么用呢?它有点不被认可,但它有效..

我需要进一步调查。