You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

62 lines
1.9 KiB

  1. (function() {
  2. var copylinkbtn = document.getElementById("copy-link-btn"),
  3. copylink = document.getElementById("copy-link-wrapper"),
  4. overlay = document.getElementById("overlay");
  5. var url = "http://url"
  6. copylinkbtn.addEventListener("click", function(e) {
  7. e.preventDefault();
  8. var error = document.getElementsByClassName('error');
  9. while (error[0]) {
  10. error[0].parentNode.removeChild(error[0]);
  11. }
  12. document.body.className += ' active';
  13. copylink.children[1].value = url;
  14. copylink.children[1].focus();
  15. copylink.children[1].select();
  16. return (false);
  17. }, false);
  18. overlay.addEventListener("click", function(e) {
  19. e.preventDefault();
  20. document.body.className = '';
  21. return (false);
  22. }, false);
  23. copylink.children[2].addEventListener("keydown", function(e) {
  24. var error = document.getElementsByClassName('error');
  25. while (error[0]) {
  26. error[0].parentNode.removeChild(error[0]);
  27. }
  28. setTimeout(function() {
  29. if((e.metaKey || e.ctrlKey) && e.keyCode === 67 && isTextSelected(copylink.children[2])) {
  30. document.body.className = '';
  31. } else if((e.metaKey || e.ctrlKey) && e.keyCode === 67 && isTextSelected(copylink.children[2]) === false) {
  32. var error = document.createElement('span');
  33. error.className = 'error';
  34. var errortext = document.createTextNode('The link was not copied, make sure the entire text is selected.');
  35. error.appendChild(errortext);
  36. copylink.appendChild(error);
  37. }
  38. }, 100);
  39. function isTextSelected(input) {
  40. if (typeof input.selectionStart == "number") {
  41. return input.selectionStart == 0 && input.selectionEnd == input.value.length;
  42. } else if (typeof document.selection != "undefined") {
  43. input.focus();
  44. return document.selection.createRange().text == input.value;
  45. }
  46. }
  47. }, false);
  48. })();