Javascript test(string)在IE中不起作用,但在Chrome、Safari和FireFox中效果良好
我通过JSON/JSONP从另一个父站点加载内容并在本地显示。以下函数劫持链接单击事件,检查链接是否指向父站点,从链接中删除父站点URL,并运行函数根据链接URL加载新闻文章 这在除IE之外的所有情况下都可以正常工作。问题在于这一行:Javascript test(string)在IE中不起作用,但在Chrome、Safari和FireFox中效果良好,javascript,jquery,regex,internet-explorer,Javascript,Jquery,Regex,Internet Explorer,我通过JSON/JSONP从另一个父站点加载内容并在本地显示。以下函数劫持链接单击事件,检查链接是否指向父站点,从链接中删除父站点URL,并运行函数根据链接URL加载新闻文章 这在除IE之外的所有情况下都可以正常工作。问题在于这一行: if(regex.test(href)) { 如果我说出来,一切都很好。然而,有条件的检查是必要的,以确保我们不会劫持到外部网站的链接,例如,纽约时报网站 我被困在这里,无法确定这到底是一个IE bug,还是正则表达式有问题,或者是HREF的收集方式有问题?任何
if(regex.test(href)) {
如果我说出来,一切都很好。然而,有条件的检查是必要的,以确保我们不会劫持到外部网站的链接,例如,纽约时报网站
我被困在这里,无法确定这到底是一个IE bug,还是正则表达式有问题,或者是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,因此字符串不会被替换,加载文章内容的函数不会被调用。您使用的是哪个版本的IE?能否在href变量中提供字符串示例?@Matt:I正在支持IE9+@Oriol:sample href如果您只运行/http:\/\/parent site.com\//。testhttp://parent-site.com/news/continuing-education-road-trip?