Автор Тема: Вземане на инфо за браузера (IE)  (Прочетена 2873 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Вземане на инфо за браузера (IE)
« -: 22 Ноември 2014, 10:38:45 »
Дайте идея, как да проверя под какъв браузер работи клиента, и ако е IE да сменя CSS и JS?
Пробвах и window.navigator.... на IE ми дава, че е Mozilla, Firefox и Netscape.
Пробвах и .browser() на jQuery и там не става.
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Вземане на инфо за браузера (IE)
« Отговор #1 -: 22 Ноември 2014, 10:51:54 »
За CSS хака се прави с conditional comment и се вкарва отделен CSS.
За JavaScript-а не съм правил такова изпълнение, може да пробваш някои от тези решения, но не съм ги тествал преди това.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: Вземане на инфо за браузера (IE)
« Отговор #2 -: 22 Ноември 2014, 11:51:43 »
Нито едно от тях не ми работи, но използвах един недостатък на IE и реших проблема така:
-първоначално исках да взема инфо дали браузъра е ИЕ защото не прочиташе $(this).html(), който ми трябва за да покажа етикета на позицията по картата тук, но да не ми показва тага title.
Код: Javascript
  1. $('div#map svg path,div#map svg circle').hover(function() {
  2.         var a;
  3.         if (this.tagName == 'circle') {
  4.             a = '1';
  5.         } else {
  6.             a = '';
  7.         }
  8.         $('body').append('<b class="help' + a + '">' + $(this).html() + '</b>');
  9.     }, function() {
  10.         $('.help').remove();
  11.         $('.help1').remove();
  12.     });
  13.    
  14.     $(document).on('mousemove mouseenter', 'path,circle', function(e) {
  15.         var a;
  16.         if (this.tagName == 'circle') {
  17.             a = '1';
  18.         } else {
  19.             a = '';
  20.         }
  21.         $('.help' + a).css({
  22.             left: e.pageX + 10,
  23.             top: e.pageY + 20
  24.         });
  25.     });
- после открих, че само ИЕ ми дава undefined на this.innerHTML и затова включих проверка и сега е така:
Код: Javascript
  1. $(document).ready(function () {
  2.  
  3.     $('div#map svg path,div#map svg circle').hover(function () {
  4.         var a = iftag(this);
  5.         if (typeof this.innerHTML !== 'undefined') {
  6.             var title = $(this).children('title').html();
  7.             $(this).html(title);
  8.             $('body').append('<b class="help' + a + '">' + $(this).html() + '</b>');
  9.         }
  10.     }, function () {
  11.         if (typeof this.innerHTML !== 'undefined') {
  12.             var title = $(this).html();
  13.             $('.help').remove();
  14.             $('.help1').remove();
  15.             $(this).html('<title>' + title + '</title>');
  16.         }
  17.     }).bind('mousemove mouseenter', function (e) {
  18.         var a = iftag(this);
  19.         $('.help' + a).css({
  20.             left: e.pageX + 10,
  21.             top: e.pageY + 20
  22.         });
  23.     });
  24.  
  25. });
  26.  
  27. var iftag = function (obj) {
  28.     if (obj.tagName == 'circle') {
  29.         a = '1';
  30.     } else {
  31.         a = '';
  32.     }
  33.     return a;
  34. };
« Последна редакция: 22 Ноември 2014, 12:05:29 от HanKrum »
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

canon4o

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 18
  • -Получени: 33
  • Публикации: 324
Re: Вземане на инфо за браузера (IE)
« Отговор #3 -: 22 Ноември 2014, 12:13:52 »
Ами недей да се мъчиш, те тия копираха всичко от Mozilla (като identifier), това го направиха нарочно да не могат хората да забраняват показваното на оригиналната страница. IE 11 е почти невъзможно да го разпознаеш. На работа преди време дизайнера правеше някакви шашмалогии да го разпознае, но така и не знам дали успя в крайна сметка. Знам само, че много го псува. ;д Големи врътки правеха с javascript-а.

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: Вземане на инфо за браузера (IE)
« Отговор #4 -: 22 Ноември 2014, 13:48:23 »
Ами недей да се мъчиш, те тия копираха всичко от Mozilla (като identifier), това го направиха нарочно да не могат хората да забраняват показваното на оригиналната страница. IE 11 е почти невъзможно да го разпознаеш. На работа преди време дизайнера правеше някакви шашмалогии да го разпознае, но така и не знам дали успя в крайна сметка. Знам само, че много го псува. ;д Големи врътки правеха с javascript-а.
Нищо не са копирали, а само хедърите, пак си е боклук!
Открих как да го разпознавам(за този случай) , просто не въсприема в тага path и circle да има свободен текст, а само title
Код: HTML
  1. <path d="M234......">Text</path><!-- не възприема -->
  2. <path d="M234......"><title>Text</title></path><!-- възприема -->
и при това
Код: Javascript
  1. $(this).html() // не връща нищо
  2. this.innerHTML // връща undefined
за това правя проверката
Код: Javascript
  1. if (typeof this.innerHTML === 'undefined')
ако ми даде true значи е IE.
« Последна редакция: 22 Ноември 2014, 14:23:13 от HanKrum »
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

canon4o

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 18
  • -Получени: 33
  • Публикации: 324
Re: Вземане на инфо за браузера (IE)
« Отговор #5 -: 22 Ноември 2014, 15:52:39 »
Нищо не са копирали, а само хедърите, пак си е боклук!

Е да де, хубавите неща не са ги взели. ;d