Forum Webscript.Ru

Дизайн и Верстка => Всё о Html => Тема начата: Skif от 16 Марта 2005, 10:25:28

Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 16 Марта 2005, 10:25:28
Сейчас мучаюсь с одним сайтиком, и имею кучу проблем. движок к нему я написал, а вот дизайн... Дизайн в принципе то же готов, но вот его отображение желает лучшего. Конечно заказчику я его пихну, но как-то не хорошо недоделку отдавать... :(
Пояснюсь на сайте имеются в табличках рисунки. Под IE все отображается вполне корректно, а вот если я смотрю из под фри, где собственно и разрабатываю все это - тут облом.. Все рисунки смещаются, под каждым появляется зазор на 3-4 пикселя.... В общем не красиво...

Вот пример как сие все может выглядеть в скрипте:

http://owe.united.net.ua/cgi-bin/home/index.pl

Если перенаправить вывод скрипта в файл(test.html) - то все просто песня отображается. Как доктор прописал. Под любым браузером.

http://owe.united.net.ua/testin.html

Листал, статейку
http://www.webscript.ru/stories/05/02/25/0767747
Может конечно и выход, но тут-то в основном  просто таблицы и рисунки... Да прыжки по страничкам... с генерацией скриптов... и прочей отнюдь не сложной фигней...
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: commander от 16 Марта 2005, 10:49:30
Skif
причем здесь Perl? для изучения html есть соответствующих форум...
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 16 Марта 2005, 11:39:34
С html все чудно, проблема именно когда отрабатывается перловый скрипт.
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 16 Марта 2005, 11:49:19
Вот скриншот как у меня при конкваере именно скрипт отображается
http://owe.united.net.ua/image/home/konq_site.jpg
если просто в html перевести - то все просто песня. Проблема имеено при генерации скриптом... :(
Хотя ничего такого екстраординарного я не использую.
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: commander от 16 Марта 2005, 12:00:29
Skif
perldoc HTML::Template
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 16 Марта 2005, 12:36:17
немного не врублюсь в модуль.
Он создает временный файл и потом перенаправляет пользователя на оный?
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: commander от 16 Марта 2005, 12:49:47
Skif
это стандартный шаблонизатор...
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 16 Марта 2005, 13:08:41
тогда такой вопрос, я вот полистал содержимое модуля и вижу такую фигню:
сначала идет то, что относиться к HTML::Template, тут все нормально, забивается то что мне нужно, радуюсь жизни, потом:

print "Content-Type: text/html\\n\\n", $template->output;

то есть содержимое всего мною забитое, как я понимаю вся моя страничка, на экран. А не получу ли я обратно тоже самое?
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: commander от 16 Марта 2005, 13:24:50
Skif
HTML::Template просто удобный шаблонизатор, который позволяет отделить програмную чать от html кода... используя его ты получаешь большие приемущества и с дебажить html код, будет гораздо удобнее...
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 16 Марта 2005, 13:54:27
Ну, тут понимаешь ли проблема не в самом html - он как гриться безупречен :) Если вывод переправить в html файл - то тот чудно откроется под любым браузером и поля все будут в ажуре, а вот если перловым скриптом - то тогда только IE..
Ничего особо глобального я не использую. Обычные таблицы, рисунки, кнопочки. CSS минимум, да тут на моем примере его вообще нету.
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 16 Марта 2005, 13:57:19
Кстати, ничего мне такого глобального шаблон не дал. Те же пироги только в профиль - я использую свой модуль, только несколько с другими пряниками...

ЗЫ: результат тот же. :(
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: commander от 16 Марта 2005, 14:12:58
Skif
оххх... код в студию...
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: NeoNox от 16 Марта 2005, 14:13:45
Skif у меня в фаерфоксе эти две ссылки выглядят совершенно одинаково, в то-же время в ИЕ - совершенно иначе.
http://owe.united.net.ua/cgi-bin/home/index.pl
http://owe.united.net.ua/testin.html
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 16 Марта 2005, 14:15:49
Я по логам смотрел - из под винды лазили ;)
А вот из под линуха/фри?
тестил на опере, конкваероре,и мозиле... думаю фаерфокс тоже не далеко убежал...
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 16 Марта 2005, 14:29:49
Во!, объединил в единое целое.


#!/usr/bin/perl -w

use strict;
use CGI qw/:standard/;
use CGI::Carp qw (fatalsToBrowser);
#use CGI;
use DBI;
use CGI::Session;

my $cgi = new CGI;
my $headpage="Skif home page";

print $cgi->header(-expires=>\'no cache\', -charset=>\'koi8-r\');
print $cgi->start_html(-title=>$headpage, -bgcolor=>\'5a66b2\',-leftmargin=>\'0\', -topmargin=>\'0\', -marginwidth=>\'0\', -marginheight=>\'0\',text=>\'lightgrey\');


#3b4eae
print "";
print " ";
print "";
print "";
print "";

print "";
print "";
print "
";
#print " &main_head_table;
print "
\\n";

print "";
print " ";
print "";
print "";
print "";
print "
";
&left_field_table;
print "
";
&sub_text_body;
print "
";
#print "\\"\\"";#164 235

print "
";
#################################################
#&table_down;

print $cgi->end_html;

sub main_head_table {

print "";
print "";
print "";
print "";
#print "";
print "";
print "";

print "
";
&button_head_right;
print "
";

}

sub main_head_lang {
print "\\n";
print "";
print "";
print "";
print "";
print "";
print "
";
print "";
print "
";
print "";
print "
";
print "";
print "
";
}

sub main_head_button {
print "";
print "";
print "";
print "";
print "";
print "
";
print ""; #width=65
print "
";
print "";# width=29>";
print "
";
}

sub left_field_table {

print "";
print "";
print  "";
print "";

print "";
print  "";
print "";
print "
";
print  ""; # width=164
print  "
";
print  ""; # width=164
print  "
";

}

sub button_head_right {
print "";
print "";

print "";
&main_head_lang;
print "";
print "";
print "";

print "";
print "";
print "";
print "";

print "";

print "
";
#print  "
";
print  "";
print "
";

print "";
print "";
print "";
print "";
print "";
print "
";
print  "";
print "
";
#print  "";
&button_head_own;
print "
";

print "
";

}

sub button_head_own {
print "";

print "";
print start_form(-method=>"post",-action=>\'resume.pl\');
print "";
print end_form;
print "";

print "";
print start_form(-method=>"post",-action=>\'resume.pl\');
print "";
print end_form;
print "";

print "";
print start_form(-method=>"post",-action=>\'resume.pl\');
print "";
print end_form;
print "";

print "
";

print "";
#print "";
#print "";

#print  "";
print "
";
print "";
print "
";
print "";
print "
";
}

sub sub_text_body {
print "sadfsdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

sdfsdfs

";

}
exit(0);

Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: commander от 16 Марта 2005, 15:32:52
Skif
мда... HTML::Template решает... :)
прими на веру... и используй его... жизнь станет а РАЗЫ легче...
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 16 Марта 2005, 15:46:10
Да нет. Поверь тоже самое, просто я перетянул из своего пакаджда функции сюда и все.
С HTML::Template тоже самое вышло. Я пробовал, без балды.
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Xander от 16 Марта 2005, 23:44:33
Comparing files index.htm and TESTIN.HTML
FC: no differences encountered

То есть вывод скрипта и testin.html идентичны. Показываются у меня тоже одинаково.

А у тебя до сих пор глючит?
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 17 Марта 2005, 10:15:33
Ага, причем, именно под фрей когда смотрю. Просил знакомого из под линуха глянуть - у него на мозилле тоже самое что и у меня.
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Xander от 17 Марта 2005, 10:38:03
Еще раз, чтобы я понял: когда смотришь, что выводит скрипт - верстка едет, когда это же самое сохраняешь и смотришь с диска - все нормально?

P.S. это перфекционизм вообще-то, все равно никто не будет это с линукса читать :)
но проблема любопытная.
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 17 Марта 2005, 15:36:25
Да. Именно когда скрипт.
Если перенаправить работу вывода в файл - тогда нормально.
Если из под windows/IE сохранить на диск - тоже нормально.
Если из под konqueror сохранить - теже пряники - едет..
Хотя открываешь подд iE и снгова все просто песня... Замкнутый круг однако...
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Xander от 17 Марта 2005, 17:15:45
DOCTYPE менять пробовал?
У тебя код вообще-то не XHTMLный - атрибуты без кавычек, теги IMG не закрыты. Еще проверь, правильно ли скрипт все заголовки выдает.

Попробуй еще через валидатор прогнать на w3.org.
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Lutik от 17 Марта 2005, 19:43:27
Skif, не в перле дело! у меня тоже что и у  
NeoNox. Проблема в том что твой хтмл не оптимизирован под эти браузеры, ищи ошибки у себя в хтмл а не в перле!
Это вопервых.
А во вторых перл отдает готовый хтмл сгенерированный твим перловым скриптом и он не причем в твоих проблемах(perl)
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Xander от 17 Марта 2005, 21:58:10
Lutik
объясни, пожалуйста, почему страничка выглядит по-разному при выводе скриптом и просмотре из файла, если как ты говоришь "ищи ошибки у себя в хтмл".
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 18 Марта 2005, 10:35:39
Вот, причину локализовал. Под IE просто суппер, под фрей/линухом тоже не плувет:

print \'\';
print $cgi->header(-expires=>\'no cache\', -charset=>\'koi8-r\');

Добавил одну строчку перед print $cgi->head(); но появилась левая надпись... Буду ковырять далее... Но это уже прогресс! :)
Вот что получилось:
http://owe.united.net.ua/image/home/konq_site2.jpg
Под IE ничего такого нету. Ну да ладно.. поковыряю еще...
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 18 Марта 2005, 11:02:08
Все даю некоторый отчет.
После плясания с бубном и некоторого шаманства пришел к такому виду документа:

my $cgi = new CGI;
my $headpage="Skif home page";

print $cgi->header(-expires=>\'no cache\', -charset=>\'koi8-r\');
print \'\';

print $cgi->start_html(-title=>$headpage, -bgcolor=>\'5a66b2\',-leftmargin=>\'0\', -topmargin=>\'0\', -marginwidth=>\'0\', -marginheight=>\'0\',text=>\'lightgrey\',\' xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" \');

после этого разметка не плывет(тьфу-тьфу-тьфу). Почему пока - бо нечто подобное 5 минут назад не воркало :)
Пока особо  тоже страничку не нагружали ничем.
Сейчас пошаманю с формами посмотрю не поплывет ли и буду дерзать далее.
ЗЫ: проверялось
Konqueror/Opera-7.60 Preview 4 под FreeBSD и IE под Win2k/XP
Просьба, кто может гляньте своими браузерами как из под выня так и linux/bsd Если поплывет - сообщите, пожалуйста.
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 18 Марта 2005, 11:41:02
Рано обрадовался. Если закрыть IE и попробовать открыть страницу выдает:
Цитировать

Не удается отобразить страницу XML
Не удается просмотреть ввод XML с использованием списка стилей . Исправьте ошибку и затем нажмите кнопку "Обновить"или повторите попытку позднее.


--------------------------------------------------------------------------------

Отказано в доступе. Ошибка при обработке ресурса \'\'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\'\'.


Вопрос, а можно как-то перлом определитиь тип браузера? Не javascript, а самим перлом? Я просто буду вставлять строку в зависимости от типа браузера, бо слегка уже достало...
Меня просто не совсем устраивает $_SERVER[\'HTTP_USER_AGENT\']
Название: perl + html + IE/Konqueror/Opera/etc...
Отправлено: Skif от 18 Марта 2005, 12:40:35
все, решил окончательно:


my $brouser = new HTTP::BrowserDetect($ENV{\'HTTP_USER_AGENT\'});
my $cgi = new CGI;


my $headpage="Skif home page";


print $cgi->header(-expires=>\'no cache\', -charset=>\'koi8-r\');
if ($brouser->browser_string() ne \'MSIE\') {
print \'\';
}
print $cgi->start_html(-title=>$headpage, -bgcolor=>\'5a66b2\',-leftmargin=>\'0\', -topmargin=>\'0\', -marginwidth=>\'0\', -marginheight=>\'0\',text=>\'lightgrey\',\' xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" \');


И тогда все пучком...