forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JavaScript / HTML (http://forum.boolean.name/forumdisplay.php?f=136)
-   -   Google Chrome Frame: избавление от IE (http://forum.boolean.name/showthread.php?t=16192)

ABTOMAT 14.01.2012 17:05

Google Chrome Frame: избавление от IE
 
Вообще, штука не новая, но всё же решил написать.

Откуда взялся?
Отсюда.

Где потестить?
Здесь.
Зачем оно надо?.
Думаю, не осталось ни одного верстальщика, который бы не столкнулся с "радостями" IE старых версий. Перечислять не буду, все вы их хорошо знаете, а кто не знает - скорее всего, ошибся разделом.

Суть-то в чём: править баги IE стоит дополнительных часов, которые, зачастую, никто оплачивать не будет. Кроме того, многие вещи вообще в принципе IE не поддерживает -> придётся использовать обходные пути, которые дороже в разработке и, опять же, никто не оценит.

Возможные выходы из ситуации:

1. Предложить юзеру сменить браузер. Вот он обрадуется, что у него и страницы грузиться быстрее стали, и жаба работает шустро, да и эффекты новые - ещё и спасибо скажет!
Как бы не так. Знаю много людей, кто не меняет свой "любимый" IE потому что он к нему привык. Особо тяжёлые случаи даже IE6 специально не обновляют, потому что даже новые версии IE для них сложны в понимании. К сожалению, таких много.

2. Попросить у заказчика денег и времени на оптимизацию сайта под IE старых версий. Скорее всего, заказчик просто вас не поймёт.

3. Забить. Так делают многие, но нехорошо как-то.

Кто такой, чем знаменит?

Компромисс предложила Корпорация Добра. Суть её такова: есть плугин, который ставится на IE (подобно флешу, например). С этого момента IE рендерит страницы движком Хрома. Без глюков, быстро и радостно. С оговоркой: разраб должен вставить один тег в заголовок страницы.

Как юзать?

Нужно вставить вот этот тег в голову страницы:
PHP код:

<meta http-equiv="X-UA-Compatible" content="chrome=1"

Теперь, если юзер зайдёт на неё И у него установлен плугин, страница отрендерится Хромом.
Кроме того, можно указывать, какие версии IE должны реагировать, а какие нет. Вот так:
Цитата:

chrome=1 - Always active
chrome=IE7 - Active for IE major version 7 or lower
chrome=IE8 - Active for IE major version 8 or lower
Подробнее - в документации.

Но нужно ещё и предложить юзеру поставить плугин, если у него его нет. Гугл уже предоставил возможность предложить юзеру сделать это.

Выглядит это примерно так:


К сожалению, выглядит оно как очередное рекламное предложение и юзер сразу же его закроет. Я рекомендую делать свои собственные предложения установить.

Делать это несложно: между тегами <!--[if lte IE 7]> и <![endif]--> (замените на желаемую версию IE) вставляем код, отвечающий за предложение об установке.

Для себя я выработал несколько правил того, как оно должно выглядеть:

1. Запрос должен быть оформлен в стиле самого сайта (желательно содержать его логотип)
Тогда юзер поймёт, что это не очередная реклама.
2. Запрос не должен содержать многобуков. Если многобуков - велика вероятность, что юзер не захочет читать и уйдёт. Текст должен быть ясным и простым: Требуется - Установи. Кнопка Install должна находиться рядом и на видном месте, и должно быть сразу понятно что она делает.
3. Запрос должен дать понять, что поставить надо и никак иначе. Ну или как минимум чтобы кнопка "закрыть" не была на самом видном месте (чтобы юзер сначала прочитал, ища её, а не машинально на неё ткнул), если вы всё же решили дать возможность лазить по сайту на осле. Например у меня сделан оверлей так что нельзя просто игнорировать запрос.

Вот так, например, оно выглядит у меня (извините, замазал опознавательные знаки):



А вот так оно выглядит в IE6 после установки плугина:



Что в итоге?
1. Не нужно править баги IE
2. Велика вероятность, что юзер таки поставит плуг (ставят же Flash, в конце концов)
3. Можно использовать text-shadow, border-raduis и т.д., чем значительно сократить время разработки (и конечную стоимость)
4. После установки плугина юзер не замечает, что он пользуется не IE. Когда он придёт на другой такой сайт, ему не надо будет ничего ставить снова, всё заработает само.

Aikon 05.02.2012 11:35

Ответ: Google Chrome Frame: избавление от IE
 
ABTOMAT, не все "опознавательные знаки замазал" :D
Сайт - *nin.com

Если бы я увидел такое сообщение, то убежал бы прочь с такого сайта. С другой стороны, кто немного разбирается уже в IE редко сидят.

ABTOMAT 05.02.2012 14:10

Ответ: Google Chrome Frame: избавление от IE
 
Цитата:

Если бы я увидел такое сообщение
Но ты бы не увидел, т.к. ты не сидишь на IE. (наверное)
В любом случае ящитаю "предложить Chrome Frame" - лучше, чем "ничего не делать"

NetBuilding 12.04.2012 14:37

Ответ: Google Chrome Frame: избавление от IE
 
А как реализовать для всех старых браузеров. такое что когда зажодишь на сайт выкидывается страничка где написано что у вас старый браузер можете его обновить или скачать другой далее ссылочки на разные браузеры (ну про ссылки на сайты браузеров то понятно). Самое главное чтоб была ссылка на тему "Хочу наслаждаться своим Стариной" при нажати на нее пользователь бы наслаждался своей стариной.

ABTOMAT 12.04.2012 19:06

Ответ: Google Chrome Frame: избавление от IE
 
если(юзер зашёл на страницу "Я_хочу_юзать_старинный_браузер")
{
в куки юзеру записать "старина = 1";
отправить юзера на главную страницу;
}
иначе // юзер на любой другой странице сайта
{
по хидерам определить, старинный ли браузер или нормальный;

если(в куках нет записи "старина = 1" И браузер старинный) // Старинный браузер и юзера ещё не предупреждали
{
показать юзеру страницу с браузерами + ссылку на страницу "Я_хочу_юзать_старинный_браузер";
}
иначе // У юзера новый браузер либо он сказал что хочет юзать старый
{
Показать сайт как есть;
}
}

NetBuilding 26.04.2012 07:15

Если Юзверь хочет юзать свой старый браузер
 
В индексе
Код:

<script type="text/javascript">if (navigator.cookieEnabled && !$.cookie("obr")) {
    var a = getBrowser();
    if ("Chrome" == a[0] && 14 > a[1] || "Firefox" == a[0] && 6 > a[1] || "MSIE" == a[0] && 8 > a[1] || "Opera" == a[0] && 10 > a[1])
      $.cookie("obr", "old", {a:1}),
        location.href = "http://Старый-браузер.клмн"
  }
  </script>

на странице древнего браузера
Код:

<a href="javascript:history.back();" mce_href="javascript:history.back();" >Ну нафиг</a>
Нефига не работает как надо. а надо чтоб возвращался на страницу где был
уже все перепробовал, в разных браузерах по разному работает.


Часовой пояс GMT +4, время: 02:57.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot