JavaScript Дата и функция версии браузера - PullRequest
0 голосов
/ 04 августа 2011

Я не могу заставить этот код работать.Я пытаюсь сделать так, чтобы, если браузер IE6 или ниже, он использовал "horarios2.png" для img src и никаких других.И если это любой другой браузер, он будет проверять день недели (0-6), чтобы заполнить конкретное изображение для каждого дня.С понедельника (1) по Wensday (3) изображение должно быть «quarta.png».На днях у них свой образ.Они работают по отдельности, но когда я пытаюсь собрать их вместе, у меня возникают проблемы, и изображение не воспроизводится.

Скрипт

$(document).ready (function horario () {
var date = new Date();
var weekday = (date.getDay());

function (msieversion) {
var ua = window.navigator.userAgent
var msie = ua.indexOf ( "MSIE " )

if ( msie > 0 )
     return parseInt (ua.substring (msie+5, ua.indexOf (".", msie )))
else
     return 0
}
if ((msieversion() == 0 )&&(weekday==0)) {
    document.getElementById('horarios').src = "img/domingo.png";}
else if ((msieversion() == 0 )&&(weekday==4)) {
    document.getElementById('horarios').src = "img/quinta.png";}
else if ((msieversion() == 0 )&&(weekday==5)) {
    document.getElementById('horarios').src = "img/sexta.png";}
else if ((msieversion() == 0 )&&(weekday==6)) {
    document.getElementById('horarios').src = "img/sabado.png";}
else if((msieversion() <= 6 )&&(weekday>=0)) {
    document.getElementById('horarios').src = "img/horarios2.png";}
else {
    document.getElementById('horarios').src = "img/quarta.png";}
});

HTML

<img id="horarios" border="0" alt="" width="343" height="45" />

Ответы [ 3 ]

3 голосов
/ 04 августа 2011

Ваш код может быть уточнен больше.

Но перед этим вы можете использовать «официальный» способ определения версии IE: ( Из более эффективного обнаружения Internet Explorer )

function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}

Теперь давайте поработаем над логикой:

  • Если браузер IE6 или ниже, он будет использовать «horarios2.png» для img src и никаких других.
  • И если это любой другой браузер, он будет проверять день недели (0-6), чтобы он заполнял определенное изображение для каждого дня.
    • С понедельника (1) по Wensday (3) изображение должно быть «quarta.png».
    • На днях есть свой собственный образ

:

function horario ()  {
   var imageName = "";
   if(getInternetExplorerVersion() <= 6) {
      imageName = "img/horarios2.png";
      return;
   }

   var date = new Date();
   var weekday = (date.getDay());
   switch(weekday)
   {
      case 0:
          imageName = "img/domingo.png";
          break;
      case 1:
      case 2:
      case 3:
          imageName = "img/quarta.png";
          break;
      case 4:
          imageName = "img/quinta.png";
          break;
      case 5:
          imageName = "img/sexta.png";
          break;
      case 6:
          imageName = "img/sabado.png";
          break;
      default:
          imageName = "img/horarios2.png";
   }
   document.getElementById('horarios').src = imageName;
}
2 голосов
/ 04 августа 2011

Вот то, что я думаю, вы имели в виду ДЕМО ЗДЕСЬ (наведите курсор мыши на изображение)

function msieversion() {  
  var ua = window.navigator.userAgent
  var msie = ua.indexOf("MSIE ");
  return (msie == -1)?0: 
      parseInt(ua.substring (msie+5, ua.indexOf (".", msie )))
}
function getImg(idx) {
  return [
  "img/domingo.png",
  "img/quarta.png",
  "img/quarta.png",
  "img/quarta.png",
  "img/quinta.png",
  "img/sexta.png",
  "img/sabado.png"
  ][idx];
}
$(document).ready(function() {
  var weekday = new Date().getDay();
  if (msieversion() == 0 ) $("#horarios").attr("src",getImg(weekday));
  else $("#horarios").attr("src",(msieversion() <= 6 )? "img/horarios2.png":"img/quinta.png");
});
1 голос
/ 04 августа 2011

Вы можете взять страницу с html5boilerplate (в этом примере не требуются какие-либо специфичные для html5 части), где вы используете проприетарную разметку [if IE] для определения версии IE, а затем читаете из <html> className элемента в javascript

Пример jsfiddle

HTML:

<!--[if lt IE 7]> <html lang="en-us" class="no-js ie6"> <![endif]--> 
<!--[if IE 7]>    <html lang="en-us" class="no-js ie7"> <![endif]--> 
<!--[if IE 8]>    <html lang="en-us" class="no-js ie8"> <![endif]--> 
<!--[if gt IE 8]><!--> <html lang="en-us" class="no-js"> <!--<![endif]--> 

JavaScript:

var htmlElement = document.getElementsByTagName('html')[0],
    horariosImg = document.getElementById('horarios'),
    imgSrc = '';

if (htmlElement.className.indexOf('ie6') > -1) {
    // do ie 6 (and lower) stuff
    imgSrc = 'img/horarios2.png';
} else {
    // do all other browser stuff
    switch ((new Date).getDay()) {
        case 0: // Sun
            imgSrc = 'img/domingo.png';
            break;
        case 1: // Mon
        case 2: // Tues
        case 3: // Wed
        case 4: // Thurs
            imgSrc = 'img/quinta.png';
            break;
        case 5: // Fri
            imgSrc = 'img/sexta.png';
            break;
        case 6: // Sat
            imgSrc = 'img/sabado.png';
            break;
    }
}
horariosImg.src = imgSrc;
...