Проблема кодирования в IE и FF.Работа в Safari и Chrome - PullRequest
2 голосов
/ 11 марта 2011

Это сводило меня с ума уже два дня ... Я пытался интегрировать магазин Big Cartel в сайт, используя их внешний API, но у меня есть некоторые проблемы с работой скрипта.Кажется, работает так, как я хочу в Chrome и Safari, но не в FF и IE?Страница, на которую я пытаюсь получить продукты: http://www.denimgeek.com/wp-content/featured.html (которая в настоящее время работает в Chrome и Safari).

Кодировка страницы ниже, я никоим образом не являюсь Javascriptпрограммист, но есть идеи, почему это не будет работать в этих браузерах?Firefox продолжает говорить «консоль не определена», и она не работает в IE8, но после того, как я вхожу в инструменты разработчика и изменяю режим страницы на причуды ?!Это сводит меня с ума!

Код страницы ниже, мне не хватает чего-то простого?

<html>
<head>


<link rel="stylesheet" type="text/css" href="http://www.denimgeek.com/wp-content/themes/atlantica/style.css">   

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">    
var subdomain = 'denimgeek';    
$(function() {
      function findImage(url, size) {
            if(!size) return url;
            var ext = url.match(/\.(\w{2,4}$)/)[1];
            var dir = url.substr(0, url.lastIndexOf('/') + 1);
            switch(size.toLowerCase()) {
                case 'large':
                    return dir + '300.' + ext;
                case 'medium':
                    return dir + '175.' + ext;
                case 'thumb':
                    return dir + '75.' + ext;
                default:
                    return url;
            }
      }
      $.getJSON('http://api.bigcartel.com/' + subdomain + '/products.js?callback=?', function(products) {
      $.each(products, function(i, product) {
          console.log(product);
          $('#products').append('<li><img src="' + findImage(product.images[0].url, 'large') + '"><br><a href="http://' + subdomain + '.bigcartel.com' + product.url + '">' + product.name + '</a></li>');
        });
      });
    });
  </script>
</head>  <body>  <ol id="products"></ol></body></html> 

Ответы [ 3 ]

4 голосов
/ 11 марта 2011

Хорошо .. в вашем коде Javascript мы можем найти:

console.log(product);  

, который выдает ошибку, если не определено console object. console object определяется, например, Firebug или Инструменты разработчика Chrome , а также IE8 + Инструменты разработчика .

Но если вы отключите эти инструменты, они будут работать в любом случае. Хорошей практикой является поймать это самостоятельно. Я использую это в моих сценариях инициализации:

if(!('console' in window) ) {
    window.console = {}

    var arr = 'log error warn time timeEnd table profile profileEnd group groupEnd debug dir'.split(' ');

    for(var i = 0, len = arr.length; i < len; i++) {
        console[arr[i]] = function() { };
    }
}

Если вы поместите этот фрагмент где-то в начало ваших сценариев, эти отладочные выходные данные console.anything не приведут к сбою всего приложения.

1 голос
/ 11 марта 2011

Без учёта типа вы находитесь в режиме причуд.Добавьте это к первой строке и посмотрите, где мы находимся:

<!doctype html>
0 голосов
/ 11 марта 2011

Вам просто нужно извлечь console.log, как если бы у вас не было firebug, это определенно приведет к краху ff или, в отличие от браузеров webkit, на которых уже установлена ​​консоль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...