Simple HTML DOM (New)
This is a fork of SimpleHTMLDOM package that uses DOMDocument classes instead of HTML string manipulation...
Read more at http://www.phpclasses.org/package/9954-PHP-Manipulate-HTML-elements-using-DOMDocument.html
Another open source database has been added to the Free SQL Servers, Database Libraries and Source Code page. This one is a relational database with an SQL interface that can function as a drop-in replacement for MySQL.
In this article we’re going to show you how to use simple vanilla JavaScript snippets to:
The APIs we will be using don’t require any external libraries, and have almost perfect browser compatibility!
An awesome accessibility feature you can add to your website is the ability to copy strings directly via button press. This interaction can be applied to quickly grab URLs, long strings such as SSH keys, terminal commands, hex colors, or any other data that is frequently copy & pasted.
To make this happen we will need to use a cool JavaScript method called execCommand()
. It allows us to invoke a number of different events that manipulate editable content such as making text bold/italic, doing undo/redo, and also copy/cut/paste.
document.execCommand('copy');
This works exactly like pressing CTRL/Cmd+C on your keyboard, so in order to copy any text we first need to have it selected. This is possible in JavaScript thanks to the Selection API, which allows us to programatically make a text selection from any HTML element on the page.
var button = document.getElementById("copy-button"), contentHolder = document.getElementById("content-holder"); button.addEventListener("click", function() { // We will need a range object and a selection. var range = document.createRange(), selection = window.getSelection(); // Clear selection from any previous data. selection.removeAllRanges(); // Make the range select the entire content of the contentHolder paragraph. range.selectNodeContents(contentHolder); // Add that range to the selection. selection.addRange(range); // Copy the selection to clipboard. document.execCommand('copy'); // Clear selection if you want to. selection.removeAllRanges(); }, false);
To see the example in action check out the editor below:
(Play with our code editor on Tutorialzine.com)
In the example above the content we want to copy is simply stored in a paragraph. If the text you need is not on the page, you will need to first write it in an element hidden off-screen.
Here we will show you how to manipulate content in the clipboard after it’s been copied. This can be very useful for escaping code, formatting numbers and dates, or for other text transformations such as uppercase, lowercase, etc.
JavaScript provides us with copy()
and paste()
events, but they are designed in such a way that the content stored in the clipboard is secure:
Since we want to read and write at the same time, we will need to use the Selection API once more. Here is the solution:
document.addEventListener('copy', function(e){ // We need to prevent the default copy functionality, // otherwise it would just copy the selection as usual. e.preventDefault(); // The copy event doesn't give us access to the clipboard data, // so we need to get the user selection via the Selection API. var selection = window.getSelection().toString(); // Transform the selection in any way we want. // In this example we will escape HTML code. var escaped = escapeHTML(selection); // Place the transformed text in the clipboard. e.clipboardData.setData('text/plain', escaped); });
You can try the code in the editor below:
(Play with our code editor on Tutorialzine.com)
In this quick tip we presented you two useful snippets for working with the clipboard in pure vanilla JavaScript. We used a bunch of hip native APIs, so here they are again if you want to read more about them:
Also, if you need more control over copy/paste/cut events, you can use a library such as clipobard.js. It has lots of features and provides a nice clean API for managing the clipboard.
We hope you enjoyed this article! Feel free to ask question or leave suggestions in the comment section below :)