-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathcopylink.min.js
More file actions
4 lines (4 loc) · 1.58 KB
/
copylink.min.js
File metadata and controls
4 lines (4 loc) · 1.58 KB
1
2
3
4
var CopyLink=function(h,f){function j(a,b,d){a.addEventListener?a.addEventListener(b,d,!1):a.attachEvent&&a.attachEvent("on"+b,function(){return d.call(a,h.event)})}function k(){var a=b.parentNode;a&&a.removeChild(b)}function i(a){this.id=a.id||"copylink";this.minimalSelection=a.minimalSelection||20;this.container=a.container;this.handler=a.handler||function(){return"<br>Source: "+location.href};this.create();this.setupEvents()}var b=null;i.addEvent=j;i.prototype={create:function(){if(!b)b=f.createElement("span"),
b.id=this.id,b.style.cssText="position: absolute; left: -9999px;"},setupEvents:function(){var a=this;j(a.container,"copy",function(){a.insert()})},insert:function(){var a=h.getSelection?h.getSelection():f.selection&&f.selection.createRange?f.selection.createRange():!1;if(a&&!((a.toString?a.toString():a.text).length<this.minimalSelection))if(a.getRangeAt){var e=a.getRangeAt(0),d=e.startContainer,c=e.endContainer;if(d&&c&&d.compareDocumentPosition){if(d.compareDocumentPosition(c)&2)d=c,c=e.startContainer;
d=e.endOffset;if(c.nodeType==1){c=c.lastChild;if(!c||c.nodeType!=3)return;d=c.data.length}var g=f.createRange();g.setStart(c,d);b.innerHTML=this.handler.call(this);g.insertNode(b);e.setEndAfter(b);a.removeAllRanges();a.addRange(e);h.setTimeout(function(){e.setEndBefore(b);a.removeRange?a.removeRange(e):a.removeAllRanges();a.addRange(e);k()},0)}}else if(a.duplicate)g=a.duplicate(),g.setEndPoint("StartToEnd",a),b.innerHTML=this.handler.call(this),g.pasteHTML(b.outerHTML),a.setEndPoint("EndToEnd",g),
a.select(),b=f.getElementById(id),h.setTimeout(k,0)}};return i}(window,document);