146 lines
8.1 KiB
Plaintext
146 lines
8.1 KiB
Plaintext
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="generator" content="pandoc" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
|
<meta name="author" content="By John Mercouris" />
|
|
<title>Bookmarklets for better browsing</title>
|
|
<style type="text/css">
|
|
code{white-space: pre-wrap;}
|
|
span.smallcaps{font-variant: small-caps;}
|
|
span.underline{text-decoration: underline;}
|
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
|
</style>
|
|
<style type="text/css">
|
|
a.sourceLine { display: inline-block; line-height: 1.25; }
|
|
a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
|
|
a.sourceLine:empty { height: 1.2em; position: absolute; }
|
|
.sourceCode { overflow: visible; }
|
|
code.sourceCode { white-space: pre; position: relative; }
|
|
div.sourceCode { margin: 1em 0; }
|
|
pre.sourceCode { margin: 0; }
|
|
@media screen {
|
|
div.sourceCode { overflow: auto; }
|
|
}
|
|
@media print {
|
|
code.sourceCode { white-space: pre-wrap; }
|
|
a.sourceLine { text-indent: -1em; padding-left: 1em; }
|
|
}
|
|
pre.numberSource a.sourceLine
|
|
{ position: relative; }
|
|
pre.numberSource a.sourceLine:empty
|
|
{ position: absolute; }
|
|
pre.numberSource a.sourceLine::before
|
|
{ content: attr(data-line-number);
|
|
position: absolute; left: -5em; text-align: right; vertical-align: baseline;
|
|
border: none; pointer-events: all;
|
|
-webkit-touch-callout: none; -webkit-user-select: none;
|
|
-khtml-user-select: none; -moz-user-select: none;
|
|
-ms-user-select: none; user-select: none;
|
|
padding: 0 4px; width: 4em;
|
|
color: #aaaaaa;
|
|
}
|
|
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
|
div.sourceCode
|
|
{ }
|
|
@media screen {
|
|
a.sourceLine::before { text-decoration: underline; }
|
|
}
|
|
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
|
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
|
code span.at { color: #7d9029; } /* Attribute */
|
|
code span.bn { color: #40a070; } /* BaseN */
|
|
code span.bu { } /* BuiltIn */
|
|
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
|
code span.ch { color: #4070a0; } /* Char */
|
|
code span.cn { color: #880000; } /* Constant */
|
|
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
|
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
|
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
|
code span.dt { color: #902000; } /* DataType */
|
|
code span.dv { color: #40a070; } /* DecVal */
|
|
code span.er { color: #ff0000; font-weight: bold; } /* Error */
|
|
code span.ex { } /* Extension */
|
|
code span.fl { color: #40a070; } /* Float */
|
|
code span.fu { color: #06287e; } /* Function */
|
|
code span.im { } /* Import */
|
|
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
|
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
|
code span.op { color: #666666; } /* Operator */
|
|
code span.ot { color: #007020; } /* Other */
|
|
code span.pp { color: #bc7a00; } /* Preprocessor */
|
|
code span.sc { color: #4070a0; } /* SpecialChar */
|
|
code span.ss { color: #bb6688; } /* SpecialString */
|
|
code span.st { color: #4070a0; } /* String */
|
|
code span.va { color: #19177c; } /* Variable */
|
|
code span.vs { color: #4070a0; } /* VerbatimString */
|
|
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
|
</style>
|
|
<!--[if lt IE 9]>
|
|
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
|
<![endif]-->
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<h1 class="title">Bookmarklets for better browsing</h1>
|
|
<p class="author">By John Mercouris</p>
|
|
</header>
|
|
<p>Bookmarklets are a feature in Nyxt that allow you to quickly create and consume snippets of JavaScript.</p>
|
|
<p>Wikipedia provides a succinct introduction and historical context:</p>
|
|
<blockquote>
|
|
<p>A bookmarklet is a bookmark stored in a web browser that contains JavaScript commands that add new features to the browser. Bookmarklets are unobtrusive JavaScripts stored as the URL of a bookmark in a web browser or as a hyperlink on a web page. Bookmarklets are usually JavaScript programs.</p>
|
|
</blockquote>
|
|
<p>Unlike in typical browsers, bookmarklets are not second-class citizens relegated to bookmarks- they are first-class commands! Because of their status in Nyxt, you can:</p>
|
|
<ul>
|
|
<li>bind snippets of JavaScript to a hotkey</li>
|
|
<li>chain JavaScript snippets in your workflows/command invokations</li>
|
|
<li>save snippets of JavaScript for later use</li>
|
|
</ul>
|
|
<p>Defining bookmarklets in Nyxt is straightforward:</p>
|
|
<div class="sourceCode" id="bookmarklet example" data-org-language="lisp"><pre class="sourceCode commonlisp"><code class="sourceCode commonlisp"><a class="sourceLine" id="bookmarklet example-1" data-line-number="1">(define-bookmarklet-command color-internal-external-links</a>
|
|
<a class="sourceLine" id="bookmarklet example-2" data-line-number="2"> <span class="st">"Color internal links red, external links blue, and in-page links orange."</span></a>
|
|
<a class="sourceLine" id="bookmarklet example-3" data-line-number="3"> <span class="st">"(function(){var i,x; ..."</span>)</a></code></pre></div>
|
|
<p>You provide:</p>
|
|
<ol>
|
|
<li>A name for your bookmarklet, this corresponds to its function/command</li>
|
|
<li>A documentation string describing what the bookmarklet does</li>
|
|
<li>Any JavaScript code you would like to run</li>
|
|
</ol>
|
|
<p>… and that's it!</p>
|
|
<p>We've included a collection of Bookmarklets we think would be useful in our <code>bookmarklets.lisp</code> file. They include commands to:</p>
|
|
<ul>
|
|
<li><code>color-internal-external-links</code>: Color internal links red, external links blue, and in-page links orange.</li>
|
|
<li><code>urls-as-link-text</code>: Changes the text of links to match their absolute URLs.</li>
|
|
<li><code>hide-visited-urls</code>: Hide visited URLs.</li>
|
|
<li><code>toggle-checkboxes</code>: Toggle all checkboxes.</li>
|
|
<li><code>view-password-field-contents</code>: View passwords on page.</li>
|
|
<li><code>show-hidden-form-elements</code>: Show hidden form elements.</li>
|
|
<li><code>enlarge-textareas</code>: Increase height of all text areas by 5 vertical lines.</li>
|
|
<li><code>show-textbox-character-count</code>: Displays a running count of the characters in each textbox.</li>
|
|
<li><code>highlight-regexp</code>: Highlights each match for a regular expression.</li>
|
|
<li><code>zoom-images-in</code>: Zoom images in.</li>
|
|
<li><code>zoom-images-out</code>: Zoom images out.</li>
|
|
<li><code>sort-table</code>: Sort a table alphabetically.</li>
|
|
<li><code>number-table-rows</code>: Add numbers to table rows.</li>
|
|
<li><code>number-lines</code>: Numberlines in plaintext documents and PRE tags.</li>
|
|
<li><code>transpose-tables</code>: Transpose all table row and columns.</li>
|
|
<li><code>remove-color</code>: Remove color from web pages.</li>
|
|
<li><code>remove-images</code>: Remove images from web pages.</li>
|
|
<li><code>hue-shift-positive</code>: Shift the colors of the web page with a positive hue.</li>
|
|
<li><code>hue-shift-negative</code>: Shift the colors of the web page with a negative hue.</li>
|
|
<li><code>increase-brightness</code>: Increase the brightness of the web page.</li>
|
|
<li><code>decrease-brightness</code>: Decrease the brightness of the web page.</li>
|
|
<li><code>invert-color</code>: Invert the color of the web page.</li>
|
|
</ul>
|
|
<p>The currently provided bookmarklets were sourced from <a href="https://www.squarefree.com/bookmarklets/">Jesse Ruderman's public domain works</a>.</p>
|
|
<p>A great illustration of how useful bookmarklets can be is shown below. We start with the Wikipedia page for Salmon.</p>
|
|
<p><img src="../static/image/article/sort-table-before.png" /></p>
|
|
<p>After executing our <code>sort-table</code> bookmarklet, every single table has a header above it that we can use to sort the elements in the table alphabetically, by column.</p>
|
|
<p><img src="../static/image/article/sort-table-after.png" /></p>
|
|
<p>We were then able to click and sort by "Scientific Name".</p>
|
|
<p>We hope you enjoy using these bookmarklets and find many more to add to your collection!</p>
|
|
<p>Thanks for reading :-)</p>
|
|
</body>
|
|
</html>
|