两个js脚本之间的冲突,我无法理解为什么?

时间:2013-06-26 07:16:06

标签: javascript conflict

我正在尝试实现一个独立的跟踪脚本,并在其他网站上按预期工作(或者至少从我观看网站和分析时看到的内容)。

代码看起来像这样

 {
  jQuery(document).ready(function($) {
    var filetypes = /\.(zip|exe|dmg|pdf|doc.*|xls.*|ppt.*|mp3|txt|rar|wma|mov|avi|wmv|flv|wav)$/i;
    var baseHref = '';
    if (jQuery('base').attr('href') != undefined) baseHref = jQuery('base').attr('href');

    jQuery('a').on('click', function(event) {
      var el = jQuery(this);
      var track = true;
      var href = (typeof(el.attr('href')) != 'undefined' ) ? el.attr('href') :"";
      var isThisDomain = href.match(document.domain.split('.').reverse()[1] + '.' + document.domain.split('.').reverse()[0]);
      if (!href.match(/^javascript:/i)) {
        var elEv = []; elEv.value=0, elEv.non_i=false;
        if (href.match(/^mailto\:/i)) {
          elEv.category = "Email";
          elEv.action = "Klick";
          elEv.label = href.replace(/^mailto\:/i, '');
          elEv.loc = href;
        }
        else if (href.match(filetypes)) {
          var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
          elEv.category = "Nerladdning";
          elEv.action = "Fil-" + extension[0];
          elEv.label = href.replace(/ /g,"-");
          elEv.loc = baseHref + href;
        }
        else if (href.match(/^https?\:/i) && !isThisDomain) {
          elEv.category = "Ex.Länk";
          elEv.action = "Klick";
          elEv.label = href.replace(/^https?\:\/\//i, '');
          elEv.non_i = true;
          elEv.loc = href;
        }

        else track = false;

        if (track) {
          _gaq.push(['_trackEvent', elEv.category.toLowerCase(), elEv.action.toLowerCase(), elEv.label.toLowerCase(), elEv.value, elEv.non_i]);
          if ( el.attr('target') == undefined || el.attr('target').toLowerCase() != '_blank') {
            setTimeout(function() { location.href = elEv.loc; }, 400);
            return false;
      }
    }
      }
    });
  });
}

这是在

之前加载的jquery版本
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js"></script>

现在解决这个问题,如果我将“my”脚本置于我将发布的脚本之上,那么我的脚本就可以了。但是,如果我按照自己的意愿去做,将我的脚本最后放在页面上它不起作用,或者在任何地方,只要它低于另一个,最终会导致我的工作无效

<script type="text/javascript"> jQuery(document).ready(function ($) { runJS(); }); </script>

runJS导致另一个.js文件是functions.js,我能理解runJS就是这个(我用下面的网站替换了网站的名称)。

function runJS() {

    if((fontLoaded('DistrictThin') && fontLoaded('NationalLight')) || timer > 30) {
        site.init();

        $(".search_result").find('img').load(function () {
            $(".search_result.primary").equalHeights();
            //$(".search_result:not(.primary)").equalHeights();
        });        

        if ($('#site_search_form').length > 0) {
            populateForm();
        }
    }
    else {
        setTimeout('runJS()', 100);
        timer += 1; 
    }
}

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

如果您在单页中使用不同版本的jquery,则必须使用此

   var jq = jQuery.noConflict (); // jq having the value of $.
                                 // In your entire script use jq instead of $.
相关问题