Posted By

jonhenshaw on 10/12/06


Tagged

window blank open new external rel target


Versions (?)

Who likes this?

2 people have marked this snippet as a favorite

luman
runebrand


Opening New Windows With JavaScript, Version 1.2


 / Published in: JavaScript
 

URL: http://www.456bereastreet.com/archive/200610/opening_new_windows_with_javascript_version_12/

A an excellent script for allowing links to open new windows while keeping the code standards compliant.

If you look at the last line of the script, you will notice that the JSTarget.init() function takes three parameters (all optional). This is what makes this script more flexible than the previous versions.

  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)");});

Report this snippet  

You need to login to post a comment.