Полезная информация

Общайтесь со знакомыми и друзьями в нашей группе в Контакте.
  • Форумы
  •  » Firefox
  •  » Абсолютные пути в HTML некорректно обрабатываются в Firefox

№119-04-2006 07:03:32

iddqt
Участник
 
Группа: Members
Зарегистрирован: 19-04-2006
Сообщений: 9

Абсолютные пути в HTML некорректно обрабатываются в Firefox

Обкатывается сайт, запускаю index.html локально с винта.
сайт в корне диска, в корне же директорий с графикой "img"
в общем, есть в исходнике строка типа следующей:
img src="/img/surf.gif"
Т.е. картинка должна искаться в директории "img", которая в корне.
Firefox же не хочет ее там искать. А указывать, например, "d:/img/surf.gif", согласитесь, неудобно, я же не для диска D: делаю сайт.
В то же время IE все понимает правильно и отображает все картики с абсолютными путями.
Так вот вопрос - это баг (или фича) Mozillы ?
Это исправляемо или обхождаемо? Есть ли костыли?
спасибо.

Отсутствует

 

№219-04-2006 07:41:39

Azathoth
Участник
 
Группа: Extensions
Откуда: Хабаровск
Зарегистрирован: 02-02-2005
Сообщений: 2692

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

iddqt, кажется есть тег <BASE>
По идее так должно помочь:
<base href="file://d:/">
Только придется в каждый html файл его прописать на время обкатки.
Прверить не могу, т.к. винды под рукой нет...

А еще лучше поставить какой-нибудь легкий web-сервер...

Отредактировано Athathoth (19-04-2006 07:41:55)


...она старалась, чтобы я больше времени проводил в разных пионерлагерях и группах продлённого дня - кстати сказать, удивительную красоту последнего словосочетания я вижу только сейчас. (c) Виктор Пелевин

Отсутствует

 

№319-04-2006 07:53:42

petrovich
Участник
 
Группа: Members
Зарегистрирован: 12-02-2005
Сообщений: 484

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

img src="img/surf.gif"

Отсутствует

 

№419-04-2006 07:54:16

iddqt
Участник
 
Группа: Members
Зарегистрирован: 19-04-2006
Сообщений: 9

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

Тэг <BASE> оказал частичное влияние: только на ссылки на странице. Ресурсы же, графика в т.ч. так и остались недоступны. =(

Отсутствует

 

№519-04-2006 07:56:40

Azathoth
Участник
 
Группа: Extensions
Откуда: Хабаровск
Зарегистрирован: 02-02-2005
Сообщений: 2692

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

Кстати, а чем абсолютные пути лучше относительных?
Я лично наоборот абсолютных стараюсь избегать


...она старалась, чтобы я больше времени проводил в разных пионерлагерях и группах продлённого дня - кстати сказать, удивительную красоту последнего словосочетания я вижу только сейчас. (c) Виктор Пелевин

Отсутствует

 

№619-04-2006 08:13:46

iddqt
Участник
 
Группа: Members
Зарегистрирован: 19-04-2006
Сообщений: 9

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

Athathoth пишет

Кстати, а чем абсолютные пути лучше относительных?
Я лично наоборот абсолютных стараюсь избегать

Согласен, что ничем не лучше, вопрос не в том. Просто столкнулся и захотел разобраться.
Почему не работает именно в Mozille, и не помогает <BASE>.
Дело в том, что Mozilla ищет ресурсы не в "file:///d:/img/", к примеру, а в "file:///img/", т.е. по примеру *nix систем в корне монтирования всех девайсов, что ли ?

Отсутствует

 

№719-04-2006 08:18:09

petrovich
Участник
 
Группа: Members
Зарегистрирован: 12-02-2005
Сообщений: 484

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

У меня на жёстком работают оба варианта:

<img src="img/surf.gif">
<img src="file:///D:/img/surf.gif">

Отредактировано petrovich (19-04-2006 08:18:35)

Отсутствует

 

№819-04-2006 10:28:57

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

/ - это корень, в системе он не приравнивается к букве диска. Насколько я понимаю, в Windows это должен быть Каталог, в котором диски, то есть пути могут быть вроде /D:/folder1/ или /F:/folder1/ но хорошо бы еще явно прописать протокол file:, что предполагает абсолютные пути. Однозначность возникает только на сервере, локально же лучше относительные пути.

Отсутствует

 

№919-04-2006 11:00:38

iddqt
Участник
 
Группа: Members
Зарегистрирован: 19-04-2006
Сообщений: 9

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

petrovich пишет

У меня на жёстком работают оба варианта:

<img src="img/surf.gif">
<img src="file:///D:/img/surf.gif">

<img src="img/surf.gif"> - это относительный путь.
<img src="file:///D:/img/surf.gif"> работает безусловно.
Рассматривается же именно <img src="/img/surf.gif"> с начальным слешем, предполагающим корень.

Al_H пишет

/ - это корень, в системе он не приравнивается к букве диска.

IE понимает, что это именно корень текущего диска, например "D:/"

Отсутствует

 

№1019-04-2006 13:24:55

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

IE понимает, что это именно корень текущего диска

"Понимает" тут не совсем верно. Буквы дисков - это не домены. Более того, адрес /C:/folder1/ Експлорер воспринимает точно так же как Fx, но почему-то приравнивает к нему адрес с пропущенной буквой диска. Представьте, что на сервере одинаково обрабатываются адреса /c/docfolder/umh.pdf и /docfolder/umh.pdf - чем это можно будет объяснить, кроме редиректа? Просто если смотреть на то, что делает IE, как на некую норму, то в любом случае, когда другой браузер делает что-то по-другому, это будет отклонением. Например, такая-то страница Експлорер выносит напрочь, а Fx на ней просто немножко притормаживает. Или Fx некую сверстанную по стандартам страницу выводит абсолютно правильно, и IE тоже, за исключением того, что меню проваливается под контент. И в том и в другом примере поведение Fx будет ненормальным.
Именно за это я и не люблю пути типа /somepath или file:///C:/somepath на локальных страницах - вечные с ними проблемы. Либо документ переносят, и все пути сбиваются - для любого браузера, либо IE воспринимает путь одним образом, Fx другим, а Опера - третьим, да еще и добавляет localhost зачем-то.

Отсутствует

 

№1119-04-2006 14:05:00

hasherfrog
Участник
 
Группа: Members
Зарегистрирован: 17-06-2005
Сообщений: 60

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

Какая-то дикая путаница :-) Почитайте: http://www.ietf.org/rfc/rfc3986.txt
Вообще, следует указать базу (<BASE>) как

Выделить код

Код:

file://localhost/C:/

(это как пример. сделайте, кстати, такую закладку на панель задач - просто перетащите - вы удивитесь :])

Отсутствует

 

№1219-04-2006 15:26:17

ViRUS
ДМБ 2008
 
Группа: Extensions
Откуда: Xa!
Зарегистрирован: 05-11-2004
Сообщений: 1468

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

hasherfrog

(это как пример. сделайте, кстати, такую закладку на панель задач - просто перетащите - вы удивитесь :])

Ух ё! А как? Почему? У меня же нет вэб-сервера!


Непослушные локоны горничной выбивались из-под её кружевного фартука...

Отсутствует

 

№1319-04-2006 19:01:02

stoneflash
Хитрый Лис
 
Группа: Extensions
Откуда: Msk
Зарегистрирован: 02-04-2006
Сообщений: 4341

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

ViRUS
Видно он и не нужен. А так - полезно...


«I actually hate programming, but I love solving problems» © Rasmus Lerdorf, PHP's Creator

Отсутствует

 

№1420-04-2006 08:01:02

iddqt
Участник
 
Группа: Members
Зарегистрирован: 19-04-2006
Сообщений: 9

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

hasherfrog пишет

Какая-то дикая путаница :-) Почитайте: http://www.ietf.org/rfc/rfc3986.txt
Вообще, следует указать базу (<BASE>) как

Выделить код

Код:

file://localhost/C:/

(это как пример. сделайте, кстати, такую закладку на панель задач - просто перетащите - вы удивитесь :])

"file://localhost/C:/" тоже не помог... Быть может, хрен с ними, с этими путями абсолютными...

Отсутствует

 

№1520-04-2006 10:59:28

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

Быть может, хрен с ними, с этими путями абсолютными...

Очень верное решение. Если не секрет, зачем они Вам были нужны?

Отсутствует

 

№1621-04-2006 00:04:59

hasherfrog
Участник
 
Группа: Members
Зарегистрирован: 17-06-2005
Сообщений: 60

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

Al_H
Для обкатки сайта :-) вверху написано.

iddqt
Вопрос действительно оказался прелюбопытным.
Для интереса я сделал html

Выделить код

Код:

<HTML><HEAD><BASE href="file://localhost/c:/">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=windows-1251">
<TITLE>Document Title</TITLE></HEAD><BODY>
<img src="/temp/c.gif"><hr><img src="/temp/d.gif">
</BODY></HTML>

Так вот Мозилла действительно резольвит абсолютные пути относительно "autority", указанной в <BASE>, а IE - относительно "autority/path". Возникает вопрос, а кто правильно? :-)

Сел внимательно читать. Нашёл.
Согласно http://www.ietf.org/rfc/rfc1808.txt правильно поступает мозилла.
Согласно пункту 4.  Resolving Relative URLs,прохождение алгоритма образования пути:
Step 1 - skip --> Step 2.с --> Step 3 - skip --> Step 4 оппа!!! --> Step 7

Это я к чему. Не лечится. Только указывать диск в ссылке (что по условию задачи не подходит). И мой "конгениальный совет" выше [Вчера 14:05:00] не сработает.

Отсутствует

 

№1721-04-2006 00:14:05

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

Для обкатки сайта :-) вверху написано.

Для обкатки лучше настроить Апач (что несложно), и ходить через localhost/

Согласно http://www.ietf.org/rfc/rfc1808.txt правильно поступает мозилла.

Вот поэтому я локальные абсолютные ссылки и не люблю. Слишком много разночтений.

Отсутствует

 

№1821-04-2006 00:33:43

hasherfrog
Участник
 
Группа: Members
Зарегистрирован: 17-06-2005
Сообщений: 60

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

Про апач - это кому как. Про "люблю" - вот, некоторым вона как приходится пыхтеть :] Но это оффтоп. Главное, мораль темы-то:


Абсолютные пути в HTML корректно обрабатываются в Firefox


:]

Отсутствует

 

№1921-04-2006 05:28:53

iddqt
Участник
 
Группа: Members
Зарегистрирован: 19-04-2006
Сообщений: 9

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

hasherfrog пишет

Главное, мораль темы-то:


Абсолютные пути в HTML корректно обрабатываются в Firefox


Да не мораль нужна в данном случае и не хотелось бы опять скатываться до выяснения "кто правильнее обрабатывает". Вопрос в том


"как заставить Firefox отрабатывать абсолютные ссылки на ресурсы"?


А вот поразмыслив глубже, я пришел в выводу, что (ИМХО, конечно) корень данной проблемы кроется именно в корне (простите за тавтологию). Точнее, что со времен ДОСа файловая система построена на том, чтобы не замечать главного корня, а каждый раздел - "СамСебеКорень". Поэтому IE в данном случае намного ПРОЩЕ!
Это, конечно, тоже оффтопик... Прошу не распространять далее эту мысль. =)

Отсутствует

 

№2021-04-2006 23:40:36

hasherfrog
Участник
 
Группа: Members
Зарегистрирован: 17-06-2005
Сообщений: 60

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

Извините за задержку, инета не было. Как всё-таки неприятно, когда решение
готово, а из-за провайдера (билайн, GPRS) не можешь выйти в сеть... Грррр...

>> "как заставить Firefox отрабатывать абсолютные ссылки на ресурсы"?
Правильнее сказать "как заставить Firefox неправильно отрабатывать..." :]
Вам ещё надо?

Решением будет использование Greasemonkey с соответствующим скриптом.
Сам по себе Greasemonkey - универсальный инструмент, не подвёл и тут :]
Как данное расширение установить... Я не буду рассказывать, ладно?
И не буду объяснять, как устанавливать для Greasemonley скрипты.
Вкратце  можете посмотреть... эммм... ну хоть тут (очень коротенько).
Лучше, конечно, сходить на сайт разработчиков, там всё-всё написано.

Скрипт такой:

Выделить код

Код:

// ==UserScript==
// @name          Disk Falsificator
// @namespace     file://localhost/
// @description	  Apply content of <BASE href=' '> tag to absolute links like IE does
// @include       file://localhost/*
// @include       file:///*
// ==/UserScript==

var string2correct = "file://localhost/";
var base;

function substBase(tag, atr)
{
	var items = document.getElementsByTagName(tag);
	for (var i = 0; i < items.length; i++)
		//ignore reletive links
		if (items[i].getAttribute(atr).charAt(0) == '/')
			//ignore correct links
			if (items[i][atr].indexOf(base) == -1)
				//replace links
				items[i][atr] = items[i][atr].replace(string2correct, base);
}

//get base value
var baseTags = document.getElementsByTagName("base");
//check if base exists
if (baseTags && baseTags.length)
{
	base = baseTags[0].href;
	//only for pages from localhost
	if (base.indexOf(string2correct) != -1)
	{
		substBase('img','src');
		substBase('a','href');
	}
}

Ньюансы эксплуатации такие:
1. Работает только для localhost (см. namespace)
2. Внутри html-ок, в <BASE href="file://localhost/C:/> указывайте нужную букву диска.
Подстрока "file://localhost/" внутри <BASE> должна быть в нижнем регистре.
Если <Base>-ов много (что странно :]), используется только первое упоминание.
3. Скрипт действует только на <a> и <img> теги в документах. Если надо расширить,
например, на iframe, или ещё на какие-то (я ведь только недавно видел огромный
список, а уже всё позабыл... :[), добавьте нужные строки после substBase('a','href');
Первый аргумент - тег, второй - свойство, которое надо "поправить".
4. На фреймы скрипт не действует. Если надо, допишите перебор фреймов (хотя
скрипт может(?) и сильно усложниться; искренне надеюсь, что Вам не нужно).

Скрипт проверен на Mozilla Firefox 1.5.0.2 и Greasemonkey 0.6.4. Всё работает.

Удачи.

Отсутствует

 

№2124-04-2006 09:21:12

iddqt
Участник
 
Группа: Members
Зарегистрирован: 19-04-2006
Сообщений: 9

Re: Абсолютные пути в HTML некорректно обрабатываются в Firefox

hasherfrog пишет

Решением будет использование Greasemonkey с соответствующим скриптом...

Спасибо за наводку. Я не стал заморачиваться с Greasemonkey, а просто написал на основе предложенного кода небольшой js-файлик, который подключаю в тексте отлаживаемой страницы одной строкой.

Во-первых, добавил substBase('link','href') для подгрузки стилей. Но вот проблема - не отображаются фоны с абсолютным путем {background-image: url(/img/bg.gif);}. Поэтому до кучи написал функцию для обхода и замены абсолютных путей в стилях. Вкратце:

Выделить код

Код:

base = file://localhost/C:/';
...

  string2correct = "url(/"
  base = "url(" + base;

  reStyle('backgroundImage');
  reStyle('cursor');
  reStyle('font');
...

function reStyle(attr) {
  var items = (document.styleSheets) ? document.styleSheets[0] : null;
  if (!items||!items.insertRule) return;
  items=items.cssRules;
  for (var i = 0; i < items.length; i++)
    if (eval('items[i].style.' + attr).length > 0)
      if (eval('items[i].style.' + attr).substring(0, string2correct.length) == string2correct)
        if (eval('items[i].style.' + attr).indexOf(base) == -1)
          eval('items[i].style.' + attr + ' = items[i].style.' + attr + '.replace(string2correct, base)');
}

Спасибо!

Отсутствует

 
  • Форумы
  •  » Firefox
  •  » Абсолютные пути в HTML некорректно обрабатываются в Firefox

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]