Skip to content

Instantly share code, notes, and snippets.

@idelem
Forked from bradleybossard/titleUrlMarkdownClip.js
Last active March 12, 2024 02:01
Show Gist options
  • Star 85 You must be signed in to star a gist
  • Fork 22 You must be signed in to fork a gist
  • Save idelem/a2b15c4fe7613487e16fb55ba3af1be9 to your computer and use it in GitHub Desktop.
Save idelem/a2b15c4fe7613487e16fb55ba3af1be9 to your computer and use it in GitHub Desktop.
Bookmarklet to copy current page title and url in Markdown format to clipboard, like [title](url) - Usual for posting links to resources in README.md files
javascript:(function() {
function copyToClipboard(text) {
if (window.clipboardData && window.clipboardData.setData) {
/*IE specific code path to prevent textarea being shown while dialog is visible.*/
return clipboardData.setData("Text", text);
} else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
var textarea = document.createElement("textarea");
textarea.textContent = text;
textarea.style.position = "fixed"; /* Prevent scrolling to bottom of page in MS Edge.*/
document.body.appendChild(textarea);
textarea.select();
try {
return document.execCommand("copy"); /* Security exception may be thrown by some browsers.*/
} catch (ex) {
console.warn("Copy to clipboard failed.", ex);
return false;
} finally {
document.body.removeChild(textarea);
}
}
}
var markdown = '[' + document.title + '](' + window.location.href + ')';
var selection = window.getSelection().toString();
if (selection.length != 0) {
selection = '\n' + selection;
}
copyToClipboard(markdown + selection);
})();
javascript: (function() {
function copyToClipboard(text) {
if (window.clipboardData && window.clipboardData.setData) {
/*IE specific code path to prevent textarea being shown while dialog is visible.*/
return clipboardData.setData("Text", text);
} else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
var textarea = document.createElement("textarea");
textarea.textContent = text;
textarea.style.position = "fixed"; /* Prevent scrolling to bottom of page in MS Edge.*/
document.body.appendChild(textarea);
textarea.select();
try {
return document.execCommand("copy"); /* Security exception may be thrown by some browsers.*/
} catch (ex) {
console.warn("Copy to clipboard failed.", ex);
return false;
} finally {
document.body.removeChild(textarea);
}
}
}
var markdown = '[[' + window.location.href + '][' + document.title + ']]';
var selection = window.getSelection().toString();
if (selection.length != 0) {
selection = '\n#+begin_src\n' + selection + '\n#+end_src\n';
}
copyToClipboard(markdown + selection);
})();
// this snippet copies links as rich text format so it could be pasted into workflowy-like editors
// see: https://stackoverflow.com/a/50067769
javascript: (function() {
function copyToClipboard(text) {
function listener(e) {
e.clipboardData.setData("text/html", text);
e.preventDefault();
}
if (window.clipboardData && window.clipboardData.setData) {
/*IE specific code path to prevent textarea being shown while dialog is visible.*/
return clipboardData.setData("text/html", text);
} else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
var textarea = document.createElement("textarea");
textarea.textContent = text;
textarea.style.position = "fixed"; /* Prevent scrolling to bottom of page in MS Edge.*/
document.body.appendChild(textarea);
textarea.select();
try {
document.addEventListener("copy", listener);
return document.execCommand("copy"); /* Security exception may be thrown by some browsers.*/
document.removeEventListener("copy", listener);
} catch (ex) {
console.warn("Copy to clipboard failed.", ex);
return false;
} finally {
document.body.removeChild(textarea);
}
}
}
var html = '<a href="' + window.location.href + '">' + document.title + '</a>';
var selection = window.getSelection().toString();
if (selection.length != 0) {
selection = '\n' + selection;
}
copyToClipboard(html + selection);
})();
javascript: (function() {
function copyToClipboard(text) {
if (window.clipboardData && window.clipboardData.setData) {
/*IE specific code path to prevent textarea being shown while dialog is visible.*/
return clipboardData.setData("Text", text);
} else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
var textarea = document.createElement("textarea");
textarea.textContent = text;
textarea.style.position = "fixed"; /* Prevent scrolling to bottom of page in MS Edge.*/
document.body.appendChild(textarea);
textarea.select();
try {
return document.execCommand("copy"); /* Security exception may be thrown by some browsers.*/
} catch (ex) {
console.warn("Copy to clipboard failed.", ex);
return false;
} finally {
document.body.removeChild(textarea);
}
}
}
var tw = '[[' + document.title + '|' + window.location.href + ']]';
copyToClipboard(tw);
})();
javascript: (function() {
function copyToClipboard(text) {
if (window.clipboardData && window.clipboardData.setData) {
/*IE specific code path to prevent textarea being shown while dialog is visible.*/
return clipboardData.setData("Text", text);
} else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
var textarea = document.createElement("textarea");
textarea.textContent = text;
textarea.style.position = "fixed"; /* Prevent scrolling to bottom of page in MS Edge.*/
document.body.appendChild(textarea);
textarea.select();
try {
return document.execCommand("copy"); /* Security exception may be thrown by some browsers.*/
} catch (ex) {
console.warn("Copy to clipboard failed.", ex);
return false;
} finally {
document.body.removeChild(textarea);
}
}
}
var tw = '[[' + window.location.href + ' |' + document.title + ']]';
copyToClipboard(tw);
})();
@maphew
Copy link

maphew commented Apr 21, 2023

After you've added these bookmarklets to your bookmarks set the keyword to something short you like, I chose "cp" for the markdown one, then activate at will with Alt-d cp. I like this route because I don't have to hunt for the marklet icon with my mouse.

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment