2015-05-06 2 views
0

Я пытаюсь сделать небольшой веб-сайт доступным как в Интернете, так и в автономном режиме, используя только html, css и немного jquery \ javascript. Следовательно, я использую все относительные пути, и все работает нормально, если я не пришел к этой проблеме, чтобы загрузить пользовательское меню на всех моих страницах с помощью небольшого интеллектуального jquery.Как динамически изменять атрибут href

Однако, поскольку мой файл menu.html загружен на разные страницы, расположенные в разных подкаталогах древовидной структуры Мне интересно, какой самый умный способ записать ссылки href разных голосов в меню.

Я сначала начал использовать все абсолютные пути в menu.html, но, конечно, он просто работает только онлайн или автономными, на основании которого корневой домен я использую в путях абсолютов (либо http://mywebsite.com/ или файл: /// D: моя_папка/и т.д.).

Конечно, использование/в начале ссылки работает только в сети, так как локально/обозначает букву диска, в которой находится папка веб-сайтов, и она будет работать тогда и только тогда, когда папка веб-сайта будет сохранена в самый высокий путь, как D:/myWenbsite. Я хотел бы сделать что-то более адаптируемое, независимо от локального пути.

ответ

2

Лучшим способом, на мой взгляд, является использование относительного URL-адреса из корня. Например, в файле menu.html при ссылке JQuery вы можете сделать следующее:

/javascript/jquery.min.js

добавляя начало «/» делает это так, что путь всегда начинается с корня домена, независимо от того, где ваш html находится в вашем каталоге.

Если вы использовали:

javascript/jquery.min.js

Это означает, что в любой директории файл menu.html находится, папка для JavaScript необходимо будет также существовать и вообще не хотел.

+0

Да, что вы сказали, но только если папка веб-сайта размещена непосредственно после корня, такого как D:/myWebsite, как управлять ситуацией, когда папка сохраняется в других подкаталогах на локальном жестком диске? Помощь действительно оценена – Maxiride

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 однако к примеру, этот образ, а не загружен правильно. Итак, что здесь с базовым тегом? Это не признание, но оно работает.

Дальнейшие расследования необходимы для меня.

Смежные вопросы