Einbindung – 1 top


Den Code in den Head-Bereich kopieren, das sieht in etwa so aus(eigentlichen Code, wegen der Übersicht weggelassen):

<head>
  <!-- weitere Headangaben -->
  <script type="text/javascript">
  //Quellcode, siehe "Code"!
  </script>
</head>

Einbindung – 2 top


Oder man speichert den Code in einer extra Datei und bindet diese in der Seite mit dem Code ein.
Diese Variante ist zu bevorzugen, denn so kann der Browsercache benutzt werden(der Code muss nicht bei jeder Anfrage neu geschickt werden).

<head>
  <!-- weitere Headangaben -->
  <script type="text/javascript" src="./copysource.js"></script>
</head>

Der Code top


Der angehängte Text kann an seine eigene Bedürfnisse angepasst werden, siehe dazu in den Code.

(function(){
var c =
{
  suffixText: '<strong>Quelle:</strong> <a href="{url}">{url}</a>' //hier der angehängte Text, wobei {url} die Quell-URL ist.
};


var undefined;

var onCopy = function()
{
  addSuffix();
};

var addSuffix = function()
{
  if( c.suffixText == undefined || c.suffixText == "" )
    return;
 
  var text = c.suffixText;
 
  var body = document.body;
 
  var e = document.createElement("div");
  e.style.height = "1px";
  e.style.width = "1px";
  e.style.overflow = "hidden";
  text = text.replace(/{url}/gi, document.location);
 
  e.innerHTML = text;
  body.appendChild(e);
 
  if (document.selection && document.selection.createRange)
  {
    var originalSelect = document.selection.createRange();   
   
    e.innerHTML = originalSelect.htmlText + "<br />" + e.innerHTML;
   
    var textRange = body.createTextRange();
    textRange.moveToElementText(e);
    textRange.select();
   
    window.setTimeout(
      function()
      {
        e.parentNode.removeChild(e);
        originalSelect.select();
      }
      , 0
    );
  }
  else if(document.createRange && window.getSelection)
  {
    var range = document.createRange();
    range.selectNode(e);
    window.getSelection().addRange(range);
   
    window.setTimeout(
      function()
      {
        e.parentNode.removeChild(e);
      }
      , 0
    );
  }
}

var startUp = function()
{
  var body = document.getElementsByTagName("body")[0];
  if( body == undefined || body == null )
  {
    window.setTimeout(startUp, 100);
    return;
  }
  var body = document.getElementsByTagName("body")[0];
  if( body.addEventListener != undefined )
    body.addEventListener("copy", onCopy, false);
  else
    body.attachEvent("oncopy", onCopy);
};

startUp();

})();

Kompatibilität top


Ich habe es auf

  • Firefox 3.6(Linux(Ubuntu) und Windows 7)
  • Internet Explorer 8(Windows 7)

testen können. Opera soll “oncopy” nicht unterstützen kommen, konnte das aber noch nicht überprüfen. Und natürlich muss auch JavaScript aktiviert sein.