JS - 引用外部js库导致错误("无效的正则表达式标志")

时间:2016-09-10 17:29:49

标签: jquery

我有一个外部库jQuery.aSimpleTour(一个web app tour插件),我已经包含在一个角度应用程序中。

我当前的网页地址是/#/ app / account-settings-confirm

我引用的js包含如下。

<script src="resources/js/simpletour/jquery.aSimpleTour.js"></script>

打开页面后,我一直收到以下Firefox FireBug控制台错误。

Syntax error - invalid regular expression flag a

/app/account-settings-confirm
    / \
     |   
-----

jquery.aSimpleTour.js第1行第5列是错误的触发点。

这是第13行到第13行的结果:

1    /**
2     * jQuery aSimpleTour
3     *
4     * @version 1.0.6
5     * @description jQuery Tour web
6     * @author alvaro.veliz@gmail.com
7     */
8    
9    (function($) {
10    
11        var settings = {
12           data: [],
13            autoStart: false,
...

这意味着什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

<强>解决方案

为了解决这个问题,我添加了charCount方法,以便在库的load事件处理程序中使用。

在加载处理程序中,我修改了解析部分,以便在我的应用程序在url中使用/#/的上下文中正确处理两个哈希字符。

修改后的代码

 function charCount(str, chr){
            return str.length - str.replace(new RegExp(chr, 'g'), "").length;
        }

    $(window).load(function(){
        var tourStep;
        loc = window.location.href;
        numHashes = charCount(loc, '#');
        if (loc.indexOf("/#/") === -1 && numHashes == 1)
          tourStep = loc.substr(1).split('=');
        else if (numHashes == 2)
        {
          str  = loc.substr(loc.indexOf('#')+1);
          tourStep = (str.substr(str.indexOf('#')+1)).split('=');
        }
        if (typeof(tourStep) != 'undefined' && typeof(eval(tourStep[0])) != 'undefined' && typeof(eval(tourStep[1])) != 'undefined') {
            $.aSimpleTour(eval(tourStep[0]), tourStep[1]);
        }
    });