【问题标题】:Uncaught syntax error with jquery plugin and chrome, works fine in other browsersjquery 插件和 chrome 未捕获的语法错误,在其他浏览器中工作正常
【发布时间】:2011-11-02 21:56:49
【问题描述】:

基本上,我正在尝试开发一个简单的插件,它允许我们直接从 JSON 动态生成 GA onclicks。所以我开发了这个快速脚本。效果很好,但 chrome 会触发“Uncaught SyntaxError: Unexpected identifier”

建议?

测试 HTML 文件:

<script src="js/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="modules/onclicks/onclickify.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
    $.getJSON('modules/onclicks/clicks.json', function(data) {
        $('#analytics').onclickify(data);
    });
});

</script>
<script id="analytics"></script>

jQuery 插件文件

(function( $ ){



$.fn.onclickify = function(clicks) {  

var onclicks = "";

return this.each(function() {

  $.each(clicks, function(key, value){

    onclicks += "$('"+value.selector+"')";
    onclicks += ".live('click', function(){\n";
    onclicks += "_gaq.push(['_trackEvent',";
    onclicks += value.name+"','";
    onclicks += value.label+"','";
    onclicks += value.action+"');\n";
    onclicks += "});\n\n";

  });

  $(this).append(onclicks);

});

};
})( jQuery );

【问题讨论】:

  • 你有错误的行号吗?

标签: javascript jquery json google-chrome


【解决方案1】:

那是行不通的。你不能像这样附加一个 jQuery 源代码。嗯,你可以,但它不会像你想象的那样做任何事情。

我不确定你到底想做什么,但我认为你可以这样做:

(function( $ ){



$.fn.onclickify = function(clicks) {  

   return this.each(function() {

     $.each(clicks, function(key, value){

      $(value.selector)
        .live('click', function(){
         _gaq.push(['_trackEvent',
           value.name,
           value.label,
           value.action
         ]);
       });
     });
   });

  };
})( jQuery );

【讨论】:

  • 似乎大部分都在工作,除了它不会向 GA 发起网络请求。不知道为什么,因为该函数肯定附加到选择器。
  • 当您构建这样的代码字符串并将其附加到 DOM 时,最多会发生的情况是代码将以纯文本形式显示在屏幕上。它肯定不会被评估。
猜你喜欢
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 2017-05-02
  • 2013-05-14
  • 2011-09-16
相关资源
最近更新 更多