使用REL External而不是弃用的Target属性打开新窗口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用REL External而不是弃用的Target属性打开新窗口相关的知识,希望对你有一定的参考价值。

Excellent Script for opening new windows from links while adhering to modern html/XHTML standards. Simple put rel="nofollow" in the anchor and link to the script within the HEAD.

I prefer to remove the text that states the link opens in an external windows. To do that, simply change this part of the last line from this:
("rel","external"," (external website, opens in a new window)")

to this:
("rel","external","")
  1. /*
  2. JSTarget function by Roger Johansson, www.456bereastreet.com
  3. */
  4. var JSTarget = {
  5. init: function(att,val,warning) {
  6. if (document.getElementById && document.createElement && document.appendChild) {
  7. var strAtt = ((typeof att == 'undefined') || (att == null)) ? 'class' : att;
  8. var strVal = ((typeof val == 'undefined') || (val == null)) ? 'non-html' : val;
  9. var strWarning = ((typeof warning == 'undefined') || (warning == null)) ? ' (opens in a new window)' : warning;
  10. var oWarning;
  11. var arrLinks = document.getElementsByTagName('a');
  12. var oLink;
  13. var oRegExp = new RegExp("(^|\s)" + strVal + "(\s|$)");
  14. for (var i = 0; i < arrLinks.length; i++) {
  15. oLink = arrLinks[i];
  16. if ((strAtt == 'class') && (oRegExp.test(oLink.className)) || (oRegExp.test(oLink.getAttribute(strAtt)))) {
  17. oWarning = document.createElement("em");
  18. oWarning.appendChild(document.createTextNode(strWarning));
  19. oLink.appendChild(oWarning);
  20. oLink.onclick = JSTarget.openWin;
  21. }
  22. }
  23. oWarning = null;
  24. }
  25. },
  26. openWin: function(e) {
  27. var event = (!e) ? window.event : e;
  28. if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return true;
  29. else {
  30. var oWin = window.open(this.getAttribute('href'), '_blank');
  31. if (oWin) {
  32. if (oWin.focus) oWin.focus();
  33. return false;
  34. }
  35. oWin = null;
  36. return true;
  37. }
  38. },
  39. /*
  40. addEvent function from http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
  41. */
  42. addEvent: function(obj, type, fn) {
  43. if (obj.addEventListener)
  44. obj.addEventListener(type, fn, false);
  45. else if (obj.attachEvent) {
  46. obj["e"+type+fn] = fn;
  47. obj[type+fn] = function() {obj["e"+type+fn]( window.event );}
  48. obj.attachEvent("on"+type, obj[type+fn]);
  49. }
  50. }
  51. };
  52. JSTarget.addEvent(window, 'load', function(){JSTarget.init("rel","external"," (external website, opens in a new window)");});

以上是关于使用REL External而不是弃用的Target属性打开新窗口的主要内容,如果未能解决你的问题,请参考以下文章

外部链接:当使用rel =“external”或rel =“nofollow”时?

链接属性rel=’external’rel=’nofollow’rel=’external nofollow’三种写法的区别

使用Prototype将Rel External更改为Target Blank

Cake 1.3 中有任何好的/简单的 Ajax 示例而不使用已弃用的助手?

jQuery rel=";external";在新窗口中打开链接

Make rel external links使用jQuery在一个新窗口中打开,并在链接标题中显示它