我通过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(),因此字符串不会被替换,并且不会调用加载文章内容的函数。