regEx.test(string)在IE中不起作用,但在Chrome,Safari,FireFox中工作正常

时间:2015-02-10 16:19:53

标签: javascript jquery regex internet-explorer

我通过JSON / JSONP从另一个(父)网站加载内容并在本地显示。以下函数劫持链接单击事件,检查链接是否指向父站点,从链接中剥离父站点URL,并运行一个函数以根据链接URL加载新闻文章。

除了IE之外,其他所有功能都可以。问题在于这一行:

if(regex.test(href)) {

如果我发表评论,一切正常。但是,有条件的检查是必要的,以确保我们不会劫持到外部网站的链接,即nytimes.com。

我一直坚持如何继续这里,我无法弄清楚这是否真的是一个IE错误,或者是否有正则表达式的问题,或者可能是如何收集HREF?任何见解都会有所帮助。完整功能如下。

function hijackURLs() {
    // hijack link click events
    $("#news-archive, #news-story").on("click", "a", function(evt) {

        var regex = /http:\/\/parent-site.com\//
            , href = $(this).attr("href");

        // make sure the link matches our regex
        // this isn't working in IE for some reason
        if(regex.test(href)) {

            evt.preventDefault();

            // replace the href with hashtag
            href = href.replace( regex, '#' ).split( '\/#more-' )[0];

            // change the url without a page refresh and add a history entry.
            history.pushState(null, null, href);

            // load the content
            showArticle( href, _news );

        }
    });
}

编辑:我在此重述。上面提到的那行不会在IE中引发错误;它只是在IE中不起作用。 href没有传递regex.test(),因此字符串不会被替换,并且不会调用加载文章内容的函数。

0 个答案:

没有答案