【问题标题】:How to dynamically change href attribute如何动态更改href属性
【发布时间】:2015-07-16 19:28:47
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript jquery html css offline-browsing


    【解决方案1】:

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

    /javascript/jquery.min.js

    添加开头的“/”使得路径始终从域的根目录开始,无论您的 html 在目录中的哪个位置。

    如果你使用过:

    javascript/jquery.min.js

    这意味着在您的 menu.html 文件所在的任何目录中,都需要存在一个用于 javascript 的文件夹,而这通常是不需要的。

    【讨论】:

    • 是的,你说的有效,但前提是网站文件夹直接放在根目录之后,如 D:/myWebsite,如何管理文件夹保存在本地硬盘的其他子目录中的情况?非常感谢您的帮助
    【解决方案2】:

    在一个小脚本中使用<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 但是,例如,此图像已正确加载。那么基本标签是怎么回事?这有点不被认可,但它有效..

    我需要进一步调查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-10
      • 2014-07-21
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 2021-01-27
      相关资源
      最近更新 更多