a标签没有设置target 属性,但也总是打开新窗口?


在修改一个别人用concrete5做的一个网站,我只是改动了主题,其它方面都没有改动过,内文还是原来的,都是由tinymce html editor编辑而成的,内文中的链接都没有设置target属性,但也总是打开新窗口,请问是什么原因造成呢?没改动前,是不会的

web前端开发 web HTML css JavaScript

倦怠拖延强迫症 10 years, 10 months ago

赞同 @依云 的观点。仔细看了网页的文件之后发现在 <head> 里头有这么一段js代码:


 function openinnew() {
   if (!document.getElementsByTagName) return;
   var links = document.getElementsByTagName("a");
   for (var i=0; i<links.length; i++) {
      if (links[i].getAttribute("href")) {
         if (links[i].getAttribute("rel") == "external" || (links[i].getAttribute("href").substring(0,4) == 'http' && links[i].getAttribute("href").indexOf('santaferelo.com/') == -1)) {
            links[i].onclick = new Function("window.open('"+links[i].getAttribute("href")+"'); return false;");
         }
      }
   }
}
window.onload = openinnew;

这里是定义了一个 openinnew() 的函数,并在网页加载后执行这个函数。获取所有 a 标签然后对其进行判断,如果 a 标签满足 rel 属性为 external href 的地址前面为 http 并且非 santaferelo.com 这个域名下的地址的时候,就调用 window.open 新开一个标签。

根据以上解读,所以你就会发现其实你的原来页面并不是所有的网址都是在原始页面中打开的, Records Storage and Records Management 你找找这个文字的链接,因为是非条件域下的地址所以也是在新窗口中打开的。然后你新改的地方由于域名变成了 app.hknow.net 了,但是js的判断域没改..所以,你懂的...

大概就是这么一回事啦,以上。

kong.ws answered 10 years, 10 months ago

Your Answer