2013-11-01 2 views
0

Возможно, название не имеет никакого смысла, поэтому я подробно объясню свою проблему.Лучшая практика для связывания изображений/файлов в разных папках сети

Допустим, у меня есть www.mysite.com, где у меня есть фоновое изображение для div, onclick(), div изменяет фоновое изображение. Все работает отлично. Проблемы начинаются, когда у меня есть подпапка, например, myblog. Он выглядит как www.example/myblog/post1.php. В post1 я получил тот же div с тем же фоном, но onclick он не работает, потому что ссылка нацеливается на img, которых не существует.

В первом случае JQuery сделать это все правильно: www.mysite.com/assets/img/picture.jpg (это фактическое местонахождение)

Во втором случае JQuery добавляет folowing ссылка: www.mysite.com/myblog /assets/img/picture.jpg код прост, как и представьте. OnClick сделать

$('#div').css("background-image", "url("assets/img/picture.jpg")"); 

так, все работает, когда я добавить ../assets/img/picture.jpg, но тогда он не будет работать в корневом каталоге.

Я попытался использовать url + assets/img/picture.jpg, но я получаю www.mysite.com/www.mysite.com/...etc (и да верно.).

Так что мой вопрос в том, как решить эту проблему? То же самое относится, например, к верхнему и нижнему колонтитулу. если у меня есть «включить» папку в корне, я не могу ссылаться на нее, если я в /blog/post1.php. Я боролся с этим на некоторое время, поэтому я хотел бы получить несколько советов.

Если это делает никакой разницы, я работаю в CodeIgniter ....

спасибо !!

ответ

1

Всякий раз, когда я буду печатать ссылку на файл на страницу, я печатаю его относительно корневой адрес:

Чтобы включить файл http://mysite.com/assets/img/picture.jpg, я хотел бы использовать /assets/img/picture.jpg ссылку. Таким образом, браузер будет искать этот файл, начиная с корневой страницы (/).

Это будет проблемой, если вы переместите весь свой сайт в другую папку. Вот почему я всегда сохраняю глобальную настройку для каждого используемого приложения, настройки «путь».

E.g. приложение http://mysite.com/app1/ имеет параметр «путь» = «приложение1». Когда я буду печатать ссылку на файл на страницу, я принимаю эту настройку во внимание, как:

$file_path = "assets/img/picture.jpg";  
echo "/$site_path/$file_path"; 

Это будет печатать /app1/assets/img/picture.jpg. Если по какой-то причине мне нужно сделать еще одну установку этого приложения в http://mysite2.com/anotherappname/, я просто изменить настройки, чтобы «anotherappname глобальный путь.

+0

ok, thats для include в php-файлах .... но как я могу управлять им в файле JQuery с помощью действий css? Как я уже упоминал, я получил/активы или ../assets. Мне нужно сделать два условия, или есть простой способ? – Merkley

+0

Как я уже говорил, если вы добавите/перед дорогой, независимо от того, где загружается скрипт, он будет выглядеть с корнем сайта. '$ ('# div'). Css (" background-image "," url ('/ assets/img/picture.jpg') ");' всегда будет выглядеть на http://mysite.com /assets/img/picture.jpg, независимо от того, находитесь ли вы внутри подпапки. – Camargo

0

Я обычно установить переменную $domain в PHP, который выглядит примерно http://www.example.com/ (обратите внимание на слэш) Я тогда echo это переменной Javascript так:.

<script> 
var domain = '<?php echo $domain; ?>'; 
</script> 

Эта переменная затем доступна в Javascript тоже.Я мог бы использовать его как это:

<script> 
$('#div').css("background-image", "url('" +domain + "assets/img/picture.jpg')"); 
</script> 

Если вам нужно изменить $domain то изменения будут сочиться в вашем Javascript что очень удобно.

+0

im going with pathArray = window.location.href.split ('/'); protocol = pathArray [0]; host = pathArray [2]; url = protocol + ': //' + host; Затем добавьте переменную url вместо своего домена, но это то же самое (я надеюсь), но, как я упомянул в теме, я получаю url (http://www.mysite.lv/blog/://www.mysite .lv/активы/IMG/picture.jpg); в элементе проверки } – Merkley

+1

@Merkley: 'window.location' имеет уже сохраненные свойства' protocol', 'host' и' pathname'. – moonwave99

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