IE和FF中的编码问题。在Safari和Chrome中工作

时间:2011-03-11 12:32:57

标签: javascript jquery firefox google-chrome

这让我疯狂了两天......我一直在尝试使用他们的外部API将Big Cartel商店集成到一个网站中,但是我遇到了一些让脚本运行的问题。它似乎在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 个答案:

答案 0 :(得分:4)

嗯..在 Javascript代码中,我们可以找到:

console.log(product);  

在没有定义console object时会抛出错误。 console object例如由 Firebug Chrome开发人员工具以及IE8 + 开发人员工具定义。

但是如果你禁用这些工具,它会抛出任何一种方式。一个好的做法就是自己捕捉它。我在我的init脚本中使用它:

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 :(得分:1)

没有doctype,你处于怪癖模式。将其添加到您的第一行,看看我们的立场:

<!doctype html>

答案 2 :(得分:0)

你只需要取出console.log,好像你没有firebug它肯定会崩溃ff,或者就像已经安装了控制台的webkit浏览器一样