41 Bookmarkletów zwiększających produktywność w Chrome, Firefox i Safari

Bookmarklet to aplikacja JavaScript, która może być przechowywana jako zakładka w przeglądarkach, takich jak normalny adres URL (jako „javascript:”). Po zapisaniu skryptozakładki możesz je uruchamiać na dowolnej stronie.

W prostych słowach Bookmarklet to zakładka z kodem JavaScript w przeglądarce internetowej, którą można uruchomić jednym kliknięciem, bookmarklet może zostać załadowany na stronę internetową jako hiperłącze, ponieważ bookmarklet to tylko fragment kodu JavaScript, więc możliwości są nieograniczone, co ty można z tym zrobić.

Przeczytaj więcej o Bookmarklet na Wikipedii

W tym artykule wymienimy niektóre z najlepszych bookmarkletów, z których może korzystać każdy programista, projektant lub geek, taki jak Ty, te bookmarklety zaoszczędzą Twój czas i zwiększą wydajność.

Jak wygląda zakładka

Oto prosty przykład bookmarkletu,

Ten bookmarklet Alerty z aktualnie otwartym adresem URL

javascript:alert(document.URL)

Przeciągnij po wybraniu powyższego kodu JavaScript do paska zakładek.

Możesz też przeciągnąć poniższy przycisk na pasek zakładek, aby dodać bookmarklet.

Dlaczego warto korzystać z Bookmarklet

Wydajność: Bookmarklety nie spowalniają twojego systemu, ponieważ nie zużywają zasobów systemowych podczas bezczynności, jak rozszerzenia.

Łatwy w utrzymaniu: zakładki są synchronizowane z przeglądarką, dzięki czemu nie tracisz żadnych nadgodzin lub możesz po prostu wyeksportować zakładki jako HTML i użyć tego.

Łatwość dostosowania: możesz w dowolnym momencie edytować dowolny kod bookmarkletów, aby wykonać zadanie tak, jak chcesz.

Oszczędność czasu: ten mały kod JavaScript oszczędza mnóstwo czasu, jeśli jest właściwie używany.

Problem z brakiem kompatybilności: Jeśli twoja przeglądarka obsługuje JavaScript, może uruchomić bookmarklet.

Brak aktualizacji: nie musisz aktualizować żadnych bookmarkletów, takich jak rozszerzenia, ponieważ prawdopodobnie będą działać idealnie z nową wersją przeglądarek.

Oto lista przydatnych zakładek

Cały kod bookmarkletów jest uproszczony, więc wiesz, co się dzieje z kodem, możesz zminimalizować ten kod, jeśli chcesz, aby bookmarkelt nadal działał.

Po prostu przeciągnij przycisk poniżej bookmarkelt do paska zakładek, aby go zapisać.

Udostępnij to Bookmarklet

Kiedykolwiek chciałeś udostępnić dowolną stronę internetową swojemu znajomemu na dowolnej platformie, ale czułeś się leniwy, możesz to zrobić za pomocą jednego kliknięcia, aby załadować wszystkie opcje udostępniania.

Ten bookmarklet jest świetny, ponieważ nie musisz dodawać osobnej bookmarkletu dla każdej witryny, aby po prostu udostępniać na niej treści.

Na wszelki wypadek, jeśli chcesz, pod koniec tego postu będziesz mógł stworzyć własną bookmarklet, dostosowując dowolną bookmarklet.

javascript: void((function(svc) {
    var d = document,
        w = window,
        p = 0,
        b = function() {
            if (!p) {
                p = 1;
                if (_atc.xol) _adr.onReady();
                if (w.addthis_sendto) addthis_sendto(svc || 'bkmore', {
                    product: 'bmt-' + _atc.ver
                })
            } else {
                p = 0;
                if (_atw) _atw.clb()
            }
        };
    if (!w._atc) {
        var ol = w.addthis_onload || [],
            o = d.createElement('script');
        w.addthis_product = 'bmt-250';
        o.src = '//s7.addthis.com/js/250/addthis_widget.js#domready=1&username=bookmarklet';
        ol.push(b);
        w.addthis_onload = ol;
        d.getElementsByTagName('body')[0].appendChild(o)
    } else b()
})())
Udostępnij to

Wyszukiwanie WayBack

Znaleziono 404 lub witryna nie działa, chcesz wiedzieć, jaka była rzeczywista zawartość strony, zanim została usunięta, wyszukiwanie na web.archive.org może być tam, gdzie strona jest przechowywana w pamięci podręcznej.

javascript: void(location.href = 'http://web.archive.org/web/*/' + escape(location.href));

Wyszukiwanie drugiej opinii

Czasami szukasz czegoś w Google, ale nie jesteś zadowolony z wyników wyszukiwania, możesz użyć tego bookmarkletu, aby jednym kliknięciem wyszukać to samo zapytanie w wyszukiwarce Yahoo.

jeśli chcesz szukać w dowolnej innej wyszukiwarce, możesz zmienić adres URL lokalizacji za pomocą

Bing „https://www.bing.com/search?q=”

DuckDuckGo „https://duckduckgo.com/?q=”

Google „https://www.google.com/search?q=”

Yahoo „https://search.yahoo.com/search?q=”

Odważne wyszukiwanie „https://search.brave.com/search?q=”

javascript: Q = [];
c = location.search.slice(1).split('&');
for (i in c) {
f = c[i].split('=');
if (f[0] == 'q' || f[0] == 'as_q' || f[0] == 'p' || f[0] == 'query')
if (f[1]) Q.push(f[1])
}
R = unescape(Q.join('; ').replace(/\+/g, ' '));
location = 'https://duckduckgo.com/?q=' + escape(R);

To tylko jeden przykład, który możesz zrobić, możesz edytować ten bookmarklet, aby użyć go do innych celów, takich jak wyszukiwanie czegoś w witrynie 1 i chcesz wyszukać to samo w witrynie 2, po prostu zastąp adres URL lokalizacji adresem URL zapytania w witrynie 2,

ale podczas dostosowywania pamiętaj, że ten bookmarklet będzie szukał „q= ” w adresie URL.

Wyszukiwarka Google, ale ograniczona do 1 witryny

Szukaj w google ograniczając wynik wyszukiwania do aktualnie otwartej strony internetowej.

javascript: q = "" + (window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text);
if (!q) q = prompt("You didn't select any text. Enter a search phrase:", "");
if (q != null) location = ("http://www.google.com/search?num=100&q=site:" + escape(location.hostname) + " \"" + escape(q.replace(/\"/g, "")) + "\"").replace(/ /g, "+");
void 0

Sprawdź całkowitą liczbę zindeksowanych stron

Chcesz wiedzieć, ile stron dowolnej witryny jest indeksowanych w Google, po prostu otwórz witrynę i skorzystaj z tego bookmarkletu.

javascript: location = "http://www.google.com/search?num=100&q=site:" + escape(location.hostname);
void 0

Włącz kliknięcie prawym przyciskiem myszy

Czy kiedykolwiek czułeś się irytujący, gdy niektóre witryny wyłączają prawy przycisk myszy?

javascript: void(document.oncontextmenu = null)

Stos stron internetowych

Czy zastanawiałeś się kiedyś, z jakiej technologii korzysta strona internetowa, na przykład szczegóły dotyczące CDN, CSS-JS Framework, platformy CMS, sieci reklamowej itp., ta bookmarklet dokładnie to mówi,

Jeśli jesteś zainteresowany stworzeniem własnej strony internetowej, oto przygotowaliśmy Stack – zbiór narzędzi, których możesz użyć, aby zwiększyć swoją produktywność.

javascript: (function() {
var d = document,
e = d.getElementById('wappalyzer-container');
if (e !== null) {
d.body.removeChild(e);
}
var u = 'https://www.wappalyzer.com/',
t = new Date().getTime(),
c = d.createElement('div'),
p = d.createElement('div'),
l = d.createElement('link'),
s = d.createElement('script');
c.setAttribute('id', 'wappalyzer-container');
l.setAttribute('rel', 'stylesheet');
l.setAttribute('href', u + 'css/bookmarklet.css');
d.head.appendChild(l);
p.setAttribute('id', 'wappalyzer-pending');
p.setAttribute('style', 'background-image: url(' + u + 'images/spinner.gif) !important');
c.appendChild(p);
s.setAttribute('src', u + 'bookmarklet/wappalyzer.js');
s.onload = function() {
window.wappalyzer = new Wappalyzer();
s = d.createElement('script');
s.setAttribute('src', u + 'bookmarklet/apps.js');
s.onload = function() {
s = d.createElement('script');
s.setAttribute('src', u + 'bookmarklet/driver.js');
c.appendChild(s);
};
c.appendChild(s);
};
c.appendChild(s);
d.body.appendChild(c);
})();

BugMeNot

Bug me not to strona internetowa, która obsługuje nazwę użytkownika i hasło przesłane przez innych użytkowników, dzięki czemu możemy zalogować się do niektórych witryn bez tworzenia kolejnego tymczasowego konta tylko po to, aby sprawdzić podstawową funkcjonalność i interfejs użytkownika.

javascript: (function() {
var url = ('http://www.bugmenot.com/view/' + escape(location.hostname));
w = open(url, 'w', 'location=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=500,height=400,modal=yes,dependent=yes');
if (w) {
setTimeout('w.focus()', 1000)
} else {
location = url
}
})();

Pobierz wideo z YouTube

Nie wyszukuj witryny Google do pobierania filmów z YouTube, po prostu dodaj ten bookmarklet do przeglądarki i gotowe.

Mamy pełny post o tym, jak pobrać wideo z YouTube, zdecydowanie sprawdź, gdzie wspomnieliśmy, jak możesz pobrać wideo z YouTube, zmieniając tylko kilka liter w adresie URL.

javascript: var regeX = /^.*(youtu.be\/|v\/|e\/|u\/\w+\/|embed\/|v=)([^#&\?]*).*/,
getYTURL = location.href,
video_id, match = getYTURL.match(regeX);
if (match && 11 == match[2].length) {
video_id = match[2];
var url = "https://www.youtubnow.com/watch/?v=" + escape(video_id);
(w = open(url, "w", "location=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=500,height=800,modal=yes,dependent=yes")) ? setTimeout("w.focus()", 1E3): location = url
} else alert(" That's Not a Valid YouTube URL, \n Need URL like this \n http://youtube.com/watch?v=KuUYePG6ygQ ");

Strona internetowa do PDF

Łatwo przekonwertuj stronę internetową na pdf,

pamiętaj tylko, że ta bookmarklet nie będzie poprawnie generować żadnej strony internetowej do pliku PDF, jeśli dostęp do strony internetowej można uzyskać tylko po pewnym uwierzytelnieniu.

javascript: void(window.open('https://www.web2pdfconvert.com#' + location.href))

URL na kod QR

Kod QR jest wszędzie, nie byłoby miło, gdybyś mógł po prostu udostępnić kod QR dowolnego adresu URL zamiast długiego niechlujnego adresu URL,

Jest to przydatne, jeśli chcesz otworzyć tę samą stronę na telefonie komórkowym, kliknij ten bookmarklet, aby wygenerować kod QR i po prostu zeskanuj kod QR.

javascript: (function() {
var url = ('http://chart.apis.google.com/chart?cht=qr&chs=300x300&chl=' + encodeURIComponent(location.href));
w = open(url, 'w', 'location=no,status=yes,menubar=no,scrollbars=no,resizable=yes,width=500,height=500,modal=yes,dependent=yes');
if (w) {
setTimeout('w.focus()', 1000)
} else {
location = url
}
})();

Włącz zaznaczanie tekstu

Aby chronić zawartość przed kopiowaniem, niektóre witryny internetowe wyłącz funkcję zaznaczania tekstu przed użytkownikami, możesz przywrócić funkcję zaznaczania tekstu za pomocą tego bookmarkletu.

javascript: (function() {
function R(a) {
ona = "on" + a;
if (window.addEventListener) window.addEventListener(a, function(e) {
for (var n = e.originalTarget; n; n = n.parentNode) n[ona] = null;
}, true);
window[ona] = null;
document[ona] = null;
if (document.body) document.body[ona] = null;
}
R("click");
R("mousedown");
R("mouseup");
R("selectstart");
})()

Wyświetl hasło

Jeśli hasło jest zapisane w przeglądarce, ale go nie pamiętasz i aby sprawdzić hasło, możesz użyć tej poręcznej przeglądarki haseł, aby sprawdzić ukryte hasło w polu hasła.

javascript: (function() {
var s, F, j, f, i;
s = "";
F = document.forms;
for (j = 0; j < F.length; ++j) {
f = F[j];
for (i = 0; i < f.length; ++i) {
if (f[i].type.toLowerCase() == "password") s += f[i].value + "\n";
}
}
if (s) alert("Passwords in forms on this page:\n\n" + s);
else alert("There are no passwords in forms on this page.");
})();

Sortuj tabelę

Jeśli znalazłeś duży stół na dowolnej stronie internetowej i chcesz szybko dodać możliwość sortowania do tabeli bez drapania się po głowie, użyj tego bookmarkletu, aby posortować tabelę.

Wypróbuj bookmarklety Table w  tabeli HTML w3schools

javascript: function toArray(c) {
var a, k;
a = new Array;
for (k = 0; k < c.length; ++k) a[k] = c[k];
return a;
}

function insAtTop(par, child) {
if (par.childNodes.length) par.insertBefore(child, par.childNodes[0]);
else par.appendChild(child);
}

function countCols(tab) {
var nCols, i;
nCols = 0;
for (i = 0; i < tab.rows.length; ++i)
if (tab.rows[i].cells.length > nCols) nCols = tab.rows[i].cells.length;
return nCols;
}

function makeHeaderLink(tableNo, colNo, ord) {
var link;
link = document.createElement('a');
link.href = 'javascript:sortTable(' + tableNo + ',' + colNo + ',' + ord + ');';
link.appendChild(document.createTextNode((ord > 0) ? 'a' : 'd'));
return link;
}

function makeHeader(tableNo, nCols) {
var header, headerCell, i;
header = document.createElement('tr');
for (i = 0; i < nCols; ++i) {
headerCell = document.createElement('td');
headerCell.appendChild(makeHeaderLink(tableNo, i, 1));
headerCell.appendChild(document.createTextNode('/'));
headerCell.appendChild(makeHeaderLink(tableNo, i, -1));
header.appendChild(headerCell);
}
return header;
}
g_tables = toArray(document.getElementsByTagName('table'));
if (!g_tables.length) alert("This page doesn't contain any tables.");
(function() {
var j, thead;
for (j = 0; j < g_tables.length; ++j) {
thead = g_tables[j].createTHead();
insAtTop(thead, makeHeader(j, countCols(g_tables[j])))
}
})();

function compareRows(a, b) {
if (a.sortKey == b.sortKey) return 0;
return (a.sortKey < b.sortKey) ? g_order : -g_order;
}

function sortTable(tableNo, colNo, ord) {
var table, rows, nR, bs, i, j, temp;
g_order = ord;
g_colNo = colNo;
table = g_tables[tableNo];
rows = new Array();
nR = 0;
bs = table.tBodies;
for (i = 0; i < bs.length; ++i)
for (j = 0; j < bs[i].rows.length; ++j) {
rows[nR] = bs[i].rows[j];
temp = rows[nR].cells[g_colNo];
if (temp) rows[nR].sortKey = temp.innerHTML;
else rows[nR].sortKey = "";
++nR;
}
rows.sort(compareRows);
for (i = 0; i < rows.length; ++i) insAtTop(table.tBodies[0], rows[i]);
}

Dodaj kolumnę liczb do tabeli

Czasami tabele nie mają kolumny liczbowej, ale chcesz policzyć, ile wierszy jest dostępnych w tabeli, wtedy ta bookmarklet będzie przydatny.

javascript: (function() {
function has(par, ctag) {
for (var k = 0; k < par.childNodes.length; ++k)
if (par.childNodes[k].tagName == ctag) return true;
}

function add(par, ctag, text) {
var c = document.createElement(ctag);
c.appendChild(document.createTextNode(text));
par.insertBefore(c, par.childNodes[0]);
}
var i, ts = document.getElementsByTagName("TABLE");
for (i = 0; i < ts.length; ++i) {
var n = 0,
trs = ts[i].rows,
j, tr;
for (j = 0; j < trs.length; ++j) {
tr = trs[j];
if (has(tr, "TD")) add(tr, "TD", ++n);
else if (has(tr, "TH")) add(tr, "TH", "Row");
}
}
})()

Transpozycja Tabeli

Możesz łatwo transponować wiersze i kolumny tabeli za pomocą tego bookmarkletu i zastosować inne bookmarklety wymienione powyżej, aby szybko wykonać pracę.

javascript: (function() {
var d = document,
q = "table",
i, j, k, y, r, c, t;
for (i = 0; t = d.getElementsByTagName(q)[i]; ++i) {
var w = 0,
N = t.cloneNode(0);
N.width = "";
N.height = "";
N.border = 1;
for (j = 0; r = t.rows[j]; ++j)
for (y = k = 0; c = r.cells[k]; ++k) {
var z, a = c.rowSpan,
b = c.colSpan,
v = c.cloneNode(1);
v.rowSpan = b;
v.colSpan = a;
v.width = "";
v.height = "";
if (!v.bgColor) v.bgColor = r.bgColor;
while (w < y + b) N.insertRow(w++).p = 0;
while (N.rows[y].p > j) ++y;
N.rows[y].appendChild(v);
for (z = 0; z < b; ++z) N.rows[y + z].p += a;
y += b;
}
t.parentNode.replaceChild(N, t);
}
})()

Punktory do listy numerowanej

Nienawidzę wypunktowań? lub po prostu preferuj listę numerowaną, możesz jednym kliknięciem zmienić listę nieuporządkowaną na listę uporządkowaną.

javascript: uls = document.getElementsByTagName("ul");
for (i = uls.length - 1; i >= 0; --i) {
oldul = uls[i];
newol = document.createElement("ol");
for (j = 0; j < oldul.childNodes.length; ++j) newol.appendChild(oldul.childNodes[j].cloneNode(true));
oldul.parentNode.replaceChild(newol, oldul);
}
void 0

Szyfruj tekst (ROT13)

Kiedykolwiek chciałeś zaszyfrować swój tekst, adres URL, kod kuponów lub spoilery przed opublikowaniem w dowolnej społeczności, grupie lub na stronie internetowej, aby tylko osoby, które chciały przeczytać Twój post, mogły go odszyfrować.

Teraz możesz to zrobić za pomocą tego bookmarkletu,

Ta bookmarklet zastępuje każdą literę o 13 pozycji od aktualnej pozycji, na przykład

Zaznaczony tekst :-  ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Zaszyfrowany tekst :-  NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm

Możesz dostosować, o ile pozycji ta bookmarklet ma przesuwać litery, zmieniając wartość w 5 wierszach. (zachowaj wartość od 1 do 25)

javascript: var coding = "abcdefghijklmnopqrstuvwxyzabcdefghijklmABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM";

function rot13(t) {
for (var r = "", i = 0; i < t.length; i++) {
character = t.charAt(i);
position = coding.indexOf(character);
if (position > -1) character = coding.charAt(position + 13);
r += character;
}
return r;
}
S = window.getSelection();

function t(N) {
return N.nodeType == N.TEXT_NODE;
}

function r(N) {
if (t(N)) N.data = rot13(N.data);
}
for (j = 0; j < S.rangeCount; ++j) {
var g = S.getRangeAt(j),
e = g.startContainer,
f = g.endContainer,
E = g.startOffset,
F = g.endOffset,
m = (e == f);
if (!m || !t(e)) {
/* rot13 each text node between e and f, not including e and f. */
q = document.createTreeWalker(g.commonAncestorContainer, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, null, false);
q.currentNode = e;
for (N = q.nextNode(); N && N != f; N = q.nextNode()) r(N);
}
if (t(f)) f.splitText(F);
if (!m) r(f);
if (t(e)) {
r(k = e.splitText(E));
if (m) f = k;
e = k;
}
if (t(f)) g.setEnd(f, f.data.length);
}
void 0

Pamiętaj, że ta bookmarklet nie jest przeznaczona do szyfrowania haseł ani niczego, co jest ściśle tajne, jak kody nuklearne. Użyj go do zabawy z przyjaciółmi i kochankami?.

Przeczytaj więcej o ROT13 na Wikipedii

Edytuj stronę

Możesz prawie wszystko zmienić na stronie internetowej, tak jak w dokumencie Word, używając tego bookmarkletu, nie musisz sprawdzać elementu, a następnie zmieniać tekstu, aby zobaczyć, jak będzie wyglądał na stronie internetowej.

javascript: document.body.contentEditable = 'true';
document.designMode = 'on';
void 0

Co to za czcionka

Możesz łatwo sprawdzić czcionkę używaną na dowolnej stronie internetowej, po prostu kliknij bookmarklet i najedź kursorem na tekst, aby poznać szczegóły na jego temat, możesz nawet napisać własny tekst, aby zobaczyć, jak wygląda.

javascript: void((function(d) {
    var e = d.createElement('script');
    e.setAttribute('type', 'text/javascript');
    e.setAttribute('charset', 'UTF-8');
    e.setAttribute('src', '//www.typesample.com/assets/typesample.js?r=' + Math.random() * 99999999);
    d.body.appendChild(e)
})(document));

Częstotliwość słów

Sprawdź częstotliwość słów na dowolnej stronie internetowej, na przykład, ile razy dane słowo jest używane na stronie internetowej, ta bookmarklet przyda się, jeśli szukasz słów kluczowych zawierających pojedyncze słowa w poście. Jedynym minusem jest to, że zlicza tylko pojedyncze słowa, a nie dwa trzy słowa łącznie.

javascript: (function() {
var T = {},
W = [],
C = 0,
s, i;

function F(n) {
var i, x, a, w, t = n.tagName;
if (n.nodeType == 3) {
a = n.data.toLowerCase().split(/[\s\(\)\:\,\.;\<\>\&\'\"]/);
for (i in a)
if (w = a[i]) {
w = " " + w;
T[w] = T[w] ? T[w] + 1 : 1;
++C;
}
}
if (t != "SCRIPT" && t != "STYLE")
for (i = 0; x = n.childNodes[i]; ++i) F(x)
}
F(document);
for (i in T) W.push([T[i], i]);
W.sort(function(a, b) {
var x = b[0] - a[0];
return x ? x : ((b[1] < a[1]) ? 1 : -1)
});
s = "<h3>" + C + " words</h3>";
for (i in W) s += W[i][0] + ":" + W[i][1] + "<br>";
with(open().document) {
write(s);
close()
}
})()

Sprawdź lub wyświetl wszystkie tagi Alt

Dla celów SEO i perspektywy użytkownika programista musi ustawić odpowiednie znaczniki alt wszystkich obrazów. Te tagi alt informują wyszukiwarkę i użytkowników o zawartości obrazu.

Sprawdź, czy Alt to bookmarklet podświetla obrazy z zieloną ramką, jeśli obraz ma znacznik alt

javascript: (function() {
function d(s) {
return s == null ? "missing" : "\"" + s + "\""
}
var c = [0, 0, 0],
i, P, a, y, D = document;
if (D.createElement("img").getAttribute("alt") != null) alert("Your browser misreports missing alts as empty alts.");
for (i = 0; P = D.images[i]; ++i) {
a = P.getAttribute("alt");
y = !!a + (a != null);
++c[y];
P.style.border = "2px " + ["dotted red", "dashed #888", "solid green"][y];
P.title = "Alt: " + d(a) + ", Title: " + d(P.getAttribute("title"));
}
top.status = "Image alt texts: " + c[0] + " missing, " + c[1] + " empty, " + c[2] + " present"
})()

Bookmarklet List Alt wyświetla wszystkie obrazy wraz ze znacznikiem alt.

javascript: (function() {
var A = {},
B = [],
D = document,
i, e, a, k, y, s, m, u, t, r, j, v, h, q, c, G;
G = open().document;
G.open();
G.close();

function C(t) {
return G.createElement(t)
}

function P(p, c) {
p.appendChild(c)
}

function T(t) {
return G.createTextNode(t)
}
for (i = 0; e = D.images[i]; ++i) {
a = e.getAttribute("alt");
k = escape(e.src) + "%" + (a != null) + a;
if (!A[k]) {
y = !!a + (a != null);
s = C("span");
s.style.color = ["red", "gray", "green"][y];
s.style.fontStyle = ["italic", "italic", ""][y];
P(s, T(["missing", "empty", a][y]));
m = e.cloneNode(true);
if (G.importNode) m = G.importNode(m, true);
if (m.width > 350) m.width = 350;
B.push([0, 7, T(e.src.split('/').reverse()[0]), m, s]);
A[k] = B.length;
}
u = B[A[k] - 1];
u[1] = (T(++u[0]));
}
t = C("table");
t.border = 1;
r = t.createTHead().insertRow(-1);
for (j = 0; v = ["#", "Filename", "Image", "Alternate text"][j]; ++j) {
h = C("th");
P(h, T(v));
P(r, h);
}
for (i = 0; q = B[i]; ++i) {
r = t.insertRow(-1);
for (j = 1; v = q[j]; ++j) {
c = r.insertCell(-1);
P(c, v);
}
}
P(G.body, t);
})()

Alexa

Jest to prosty bookmarklet, który informuje o rankingu Alexa witryny.

javascript: location = 'https://www.alexa.com/siteinfo/' + location.hostname

Nie działa u mnie lub u wszystkich

Sprawdź, czy strona nie działa tylko dla Ciebie, czy dla wszystkich.

javascript: location = 'https://downforeveryoneorjustme.com/' + location.hostname

Usuń kolory

Niektóre strony internetowe używają krzykliwych kolorów, które utrudniają skupienie się na treści, ta bookmarklet usunie wszystkie kolory ze strony i doda podstawowe kolory linków, które są dla Ciebie wystarczające. Możesz dostosować ten bookmarklet, aby dodać niestandardowy CSS podczas usuwania koloru.

javascript: (function() {
var newSS, styles = '* { background: white ! important; color: black !important } :link, :link * { color: #0000EE !important } :visited, :visited * { color: #551A8B !important }';
if (document.createStyleSheet) {
document.createStyleSheet("javascript:'" + styles + "'");
} else {
newSS = document.createElement('link');
newSS.rel = 'stylesheet';
newSS.href = 'data:text/css,' + escape(styles);
document.getElementsByTagName("head")[0].appendChild(newSS);
}
})();

Usuń zbyteczne elementy

Możesz łatwo usunąć elementy iframe, osadzania, aplety z dowolnej strony internetowej, aby poprawić trochę przepustowość i sprawić, by zawartość była czytelna.

javascript: (function() {
function R(w) {
try {
var d = w.document,
j, i, t, T, N, b, r = 1,
C;
for (j = 0; t = ["object", "embed", "applet", "iframe"][j]; ++j) {
T = d.getElementsByTagName(t);
for (i = T.length - 1;
(i + 1) && (N = T[i]); --i)
if (j != 3 || !R((C = N.contentWindow) ? C : N.contentDocument.defaultView)) {
b = d.createElement("div");
b.style.width = N.width;
b.style.height = N.height;
b.innerHTML = "<del>" + (j == 3 ? "third-party " + t : t) + "</del>";
N.parentNode.replaceChild(b, N);
}
}
} catch (E) {
r = 0
}
return r
}
R(self);
var i, x;
for (i = 0; x = frames[i]; ++i) R(x)
})()

Usuń arkusze stylów

Sprawdź jak wygląda każda strona bez css

javascript: (function() {
var i, x;
for (i = 0; x = document.styleSheets[i]; ++i) x.disabled = true;
})();

Usuń obrazy

Po prostu usuń. Możesz usunąć wszystkie obrazy załadowane na stronie jednym kliknięciem.

javascript: (function() {
C = document.cookie.split("; ");
for (d = "." + location.host; d; d = ("" + d).substr(1).match(/\..*$/))
for (sl = 0; sl < 2; ++sl)
for (p = "/" + location.pathname; p; p = p.substring(0, p.lastIndexOf('/')))
for (i in C)
if (c = C[i]) {
document.cookie = c + "; domain=" + d.slice(sl) + "; path=" + p.slice(1) + "/" + "; expires=" + new Date((new Date).getTime() - 1e11).toGMTString()
}
})()

Usuń pliki cookie

Każda przeglądarka internetowa uwielbia pliki cookie, za każdym razem, gdy odwiedzasz jakąkolwiek stronę internetową, przechowuje ona niektóre dane o Tobie w przeglądarce do przyszłego śledzenia analitycznego lub kierowania reklam. Możesz usunąć wszystkie pliki cookie ustawione przez witrynę przez ten bookmarklet.

javascript: (function() {
C = document.cookie.split("; ");
for (d = "." + location.host; d; d = ("" + d).substr(1).match(/\..*$/))
for (sl = 0; sl < 2; ++sl)
for (p = "/" + location.pathname; p; p = p.substring(0, p.lastIndexOf('/')))
for (i in C)
if (c = C[i]) {
document.cookie = c + "; domain=" + d.slice(sl) + "; path=" + p.slice(1) + "/" + "; expires=" + new Date((new Date).getTime() - 1e11).toGMTString()
}
})()

URL jako tekst linku

Zdarza się to wiele razy, gdy odwiedzasz dowolną witrynę internetową, aby pobrać coś, co Ci się podoba, za pomocą 10 linków do pobierania, ale tylko jeden z nich działa, możesz użyć tego bookmarkletu, aby każdy link wyświetlał pełny adres URL, zanim jeszcze go klikniesz.

javascript: (function() {
var i, c, x, h;
for (i = 0; x = document.links[i]; ++i) {
h = x.href;
x.title += " " + x.innerHTML;
while (c = x.firstChild) x.removeChild(c);
x.appendChild(document.createTextNode(h));
}
})()

Linki wewnętrzne / zewnętrzne

Możesz łatwo sprawdzić, ile linków w artykule wskazuje na zewnętrzną stronę internetową, a która z nich jest wewnętrzna.

Czerwony = łącze wewnętrzne

Pomarańczowy = Aktualnie otwarty link

Niebieski = łącze zewnętrzne

możesz zmienić te kolory w linii 2

javascript: (function() {
var i, x;
for (i = 0; x = document.links[i]; ++i) x.style.color = ["blue", "red", "orange"][sim(x, location)];

function sim(a, b) {
if (a.hostname != b.hostname) return 0;
if (fixPath(a.pathname) != fixPath(b.pathname) || a.search != b.search) return 1;
return 2;
}

function fixPath(p) {
p = (p.charAt(0) == "/" ? "" : "/") + p; /*many browsers*/
p = p.split("?")[0]; /*opera*/
return p;
}
})()

Analizator wydajności

Bez otwierania konsoli programisty możesz sprawdzić dowolne wskaźniki wydajności stron w schludny i przejrzysty sposób. Używa Resources Timing API, Navigation Timing API i User-Timing-request według typu, domen itp.

Możesz o tym przeczytać w jego repozytorium

javascript: (function() {
var el = document.createElement('script');
el.type = 'text/javascript';
el.src = 'https://micmro.github.io/performance-bookmarklet/dist/performanceBookmarklet.min.js';
el.onerror = function() {
alert("Looks like the Content Security Policy directive is blocking the use of bookmarklets\n\nYou can copy and paste the content of:\n\n\"https://micmro.github.io/performance-bookmarklet/dist/performanceBookmarklet.min.js\"\n\ninto your console instead\n\n(link is in console already)");
console.log("https://micmro.github.io/performance-bookmarklet/dist/performanceBookmarklet.min.js");
};
document.getElementsByTagName('body')[0].appendChild(el);
})();

Mapa termiczna (Heatmap)

Sprawdź, które obrazy strony zajmują najwięcej czasu podczas ładowania, informuje również o czasie pierwszego malowania i pełnego załadowania.

javascript: (function() {
var el = document.createElement('script');
el.src = 'https://zeman.github.io/perfmap/perfmap.js';
document.body.appendChild(el);
})();

Zobacz wszystkie arkusze stylów

Wymień wszystkie arkusze stylów używane w aktualnie otwartej stronie, w tym wbudowany arkusz stylów.

javascript: s = document.getElementsByTagName('STYLE');
ex = document.getElementsByTagName('LINK');
d = window.open().document; /*set base href*/
d.open();
d.close();
b = d.body;

function trim(s) {
return s.replace(/^\s*\n/, '').replace(/\s*$/, '');
};

function iff(a, b, c) {
return b ? a + b + c : '';
}

function add(h) {
b.appendChild(h);
}

function makeTag(t) {
return d.createElement(t);
}

function makeText(tag, text) {
t = makeTag(tag);
t.appendChild(d.createTextNode(text));
return t;
}
add(makeText('style', 'iframe{width:100%;height:18em;border:1px solid;'));
add(makeText('h3', d.title = 'Style sheets in ' + location.href));
for (i = 0; i < s.length; ++i) {
add(makeText('h4', 'Inline style sheet' + iff(' title="', s[i].title, '"')));
add(makeText('pre', trim(s[i].innerHTML)));
}
for (i = 0; i < ex.length; ++i) {
rs = ex[i].rel.split(' ');
for (j = 0; j < rs.length; ++j)
if (rs[j].toLowerCase() == 'stylesheet') {
add(makeText('h4', 'link rel="' + ex[i].rel + '" href="' + ex[i].href + '"' + iff(' title="', ex[i].title, '"')));
iframe = makeTag('iframe');
iframe.src = ex[i].href;
add(iframe);
break;
}
}
void 0

Zobacz wszystkie skrypty

Wymień wszystkie skrypty załadowane na stronie, które są wbudowane lub załadowane przez adres URL.

javascript: s = document.getElementsByTagName('SCRIPT');
d = window.open().document; /*140681*/
d.open();
d.close();
b = d.body;

function trim(s) {
return s.replace(/^\s*\n/, '').replace(/\s*$/, '');
};

function add(h) {
b.appendChild(h);
}

function makeTag(t) {
return d.createElement(t);
}

function makeText(tag, text) {
t = makeTag(tag);
t.appendChild(d.createTextNode(text));
return t;
}
add(makeText('style', 'iframe{width:100%;height:18em;border:1px solid;'));
add(makeText('h3', d.title = 'Scripts in ' + location.href));
for (i = 0; i < s.length; ++i) {
if (s[i].src) {
add(makeText('h4', 'script src="' + s[i].src + '"'));
iframe = makeTag('iframe');
iframe.src = s[i].src;
add(iframe);
} else {
add(makeText('h4', 'Inline script'));
add(makeText('pre', trim(s[i].innerHTML)));
}
}
void 0

Zobacz częściowe źródło

Wyświetl kod źródłowy wybranego obszaru bez manipulowania w konsoli programisty, po prostu wybierz obszar i użyj tego bookmarkletu.

javascript: function getSelSource() {
x = document.createElement("div");
x.appendChild(window.getSelection().getRangeAt(0).cloneContents());
return x.innerHTML;
}

function makeHR() {
return nd.createElement("hr");
}

function makeParagraph(text) {
p = nd.createElement("p");
p.appendChild(nd.createTextNode(text));
return p;
}

function makePre(text) {
p = nd.createElement("pre");
p.appendChild(nd.createTextNode(text));
return p;
}
nd = window.open().document;
ndb = nd.body;
if (!window.getSelection || !window.getSelection().rangeCount || window.getSelection().getRangeAt(0).collapsed) {
nd.title = "Generated Source of: " + location.href;
ndb.appendChild(makeParagraph("No selection, showing generated source of entire document."));
ndb.appendChild(makeHR());
ndb.appendChild(makePre("<html>\n" + document.documentElement.innerHTML + "\n</html>"));
} else {
nd.title = "Partial Source of: " + location.href;
ndb.appendChild(makePre(getSelSource()));
};
void 0

Zmień tekst – na  małe litery, WIELKIE LITERY, Wielkie litery

Dzięki temu możesz zmienić cały tekst dowolnej witryny na małe, WIELKIE LITERY lub Wielkie litery.

na małe litery

javascript: (function() {
var i, t, D = document;
for (i = 0; t = D.getElementsByTagName('textarea')[i]; ++i) t.value = t.value.toLowerCase(); 
var newSS, styles = '*{text-transform:lowercase}input,textarea{text-transform:none}';
if (D.createStyleSheet) {
D.createStyleSheet("javascript:'" + styles + "'");
} else {
newSS = D.createElement('link');
newSS.rel = 'stylesheet';
newSS.href = 'data:text/css,' + escape(styles);
D.getElementsByTagName("head")[0].appendChild(newSS);
}
})()

aby tekst był DUŻYMI ​​LITERAMI,

zmień w wierszu 4 „małe litery” na „wielkie litery”

aby tekst był pisany wielkimi literami,

zmień w wierszu 4 „małe litery” na „wielkimi literami”

Niech pada śnieg

Możesz sprawić, że dowolna zakładka w przeglądarce będzie jak śnieżyca.

javascript: (t => {
function i() {
this.D = function() {
const t = h.atan(this.i / this.d);
l.save(), l.translate(this.b, this.a), l.rotate(-t), l.scale(this.e, this.e * h.max(1, h.pow(this.j, .7) / 15)), l.drawImage(m, -v / 2, -v / 2), l.restore()
}
}
window;
const h = Math,
r = h.random,
a = document,
o = Date.now;
e = (t => {
l.clearRect(0, 0, _, f), l.fill(), requestAnimationFrame(e);
const i = .001 * y.et;
y.r();
const s = L.et * g;
for (var n = 0; n < C.length; ++n) {
const t = C[n];
t.i = h.sin(s + t.g) * t.h, t.j = h.sqrt(t.i * t.i + t.f), t.a += t.d * i, t.b += t.i * i, t.a > w && (t.a = -u), t.b > b && (t.b = -u), t.b < -u && (t.b = b), t.D()
}
}), s = (t => {
for (var e = 0; e < p; ++e) C[e].a = r() * (f + u), C[e].b = r() * _
}), n = (t => {
c.width = _ = innerWidth, c.height = f = innerHeight, w = f + u, b = _ + u, s()
});
class d {
constructor(t, e = !0) {
this._ts = o(), this._p = !0, this._pa = o(), this.d = t, e && this.s()
}
get et() {
return this.ip ? this._pa - this._ts : o() - this._ts
}
get rt() {
return h.max(0, this.d - this.et)
}
get ip() {
return this._p
}
get ic() {
return this.et >= this.d
}
s() {
return this._ts = o() - this.et, this._p = !1, this
}
r() {
return this._pa = this._ts = o(), this
}
p() {
return this._p = !0, this._pa = o(), this
}
st() {
return this._p = !0, this
}
}
const c = a.createElement("canvas");
H = c.style, H.position = "fixed", H.left = 0, H.top = 0, H.width = "100vw", H.height = "100vh", H.zIndex = "100000", H.pointerEvents = "none", a.body.insertBefore(c, a.body.children[0]);
const l = c.getContext("2d"),
p = 300,
g = 5e-4,
u = 20;
let _ = c.width = innerWidth,
f = c.height = innerHeight,
w = f + u,
b = _ + u;
const v = 15.2,
m = a.createElement("canvas"),
E = m.getContext("2d"),
x = E.createRadialGradient(7.6, 7.6, 0, 7.6, 7.6, 7.6);
x.addColorStop(0, "hsla(255,255%,255%,1)"), x.addColorStop(1, "hsla(255,255%,255%,0)"), E.fillStyle = x, E.fillRect(0, 0, v, v);
let y = new d(0, !0),
C = [],
L = new d(0, !0);
for (var j = 0; j < p; ++j) {
const t = new i;
t.a = r() * (f + u), t.b = r() * _, t.c = 1 * (3 * r() + .8), t.d = .1 * h.pow(t.c, 2.5) * 50 * (2 * r() + 1), t.d = t.d < 65 ? 65 : t.d, t.e = t.c / 7.6, t.f = t.d * t.d, t.g = r() * h.PI / 1.3, t.h = 15 * t.c, t.i = 0, t.j = 0, C.push(t)
}
s(), EL = a.addEventListener, EL("visibilitychange", () => setTimeout(n, 100), !1), EL("resize", n, !1), e()
})()

Zagłosuj za wszystkimi – Reddit

Ten bookmarklet przebija wszystkie posty w bieżącym widoku, możesz go użyć do przegłosowania wszystkich postów w swoim ulubionym subreddicie.

javascript: (function() {
var q = [];
$('.up').each(function() {
var that = this;
var f = function(index) {
$(that).trigger('click');
$(that).trigger('mousedown');
setTimeout(function() {
if (q[index]) {
q[index](index + 1);
} else {
if (upVoteTimer) {
window.clearTimeout(upVoteTimer);
}
}
}, 500);
};
q.push(f);
});
var upVoteTimer = window.setTimeout(function() {
q[0](1);
}, 50);
}());

Szybkie wyszukiwanie w APKMirror

Czy kiedykolwiek chciałeś obniżyć wersję dowolnej aplikacji na Androida, ale nigdy nie znalazłeś linku do pobrania poprzedniej wersji apk lub?

chcesz po prostu wysłać apk do znajomego lub

chcesz pobrać i zainstalować aplikację na dowolnym urządzeniu, na którym nie zainstalowano aplikacji sklepu Google Play lub nie chcesz się logować (np. emulatory Androida).

Aby skorzystać z tego bookmarkletu, odwiedź stronę sklepu z aplikacjami dowolnej aplikacji i przetestuj ją.

javascript: var regeX = /(?<=[?&]id=)[^&\n]+/g,
getGPSURL = location.href,
video_id, match = getGPSURL.match(regeX);
if (match) {
var url = "https://www.apkmirror.com/?s=" + escape(match) + "&post_type=app_release&searchtype=apk";
(w = open(url, "w", "location=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=500,height=800,modal=yes,dependent=yes")) ? setTimeout("w.focus()", 1E3): location = url
} else alert(" That's Not a Valid Google Play Store URL, \n Need URL like this \n https://play.google.com/store/apps/details?id=com.google.android.googlequicksearchbox")

Pamiętaj, że wszystkie aplikacje nie są dostępne w APKMirror.

Nienawidzę haseł

Dobrą praktyką jest, aby zawsze używać unikalnych haseł podczas tworzenia kont na stronach internetowych, więc jeśli hasło do jednej witryny zostanie naruszone, twoje inne konta są mądre.

Jeśli nie używasz żadnego menedżera haseł, takiego jak LastPass, Bitwarden lub 1Password, naprawdę trudno jest śledzić wszystkie hasła.

Aby rozwiązać ten problem, Nic Wolff stworzył bookmarklet, który utworzy unikalne hasło dla każdej zarejestrowanej strony internetowej ,

Jedyne co musisz zapamiętać to 1 hasło główne .

Ten bookmarkelt użyje nazwy domeny aktualnie otwartej witryny + Twojego hasła głównego w celu utworzenia unikalnego hasła . To hasło będzie zawsze takie samo dla Ciebie tak długo, jak nazwa domeny i Twoje hasło główne.

Najlepsze w tym rozszerzeniu jest to, że jeśli uruchomisz tę książeczkę na stronie rejestracji lub logowania, automatycznie wypełni ona pole hasła wygenerowanym hasłem.

javascript: var b64pad = '';
var chrsz = 8;

function b64_sha1(s) {
    return binb2b64(core_sha1(str2binb(s), s.length * chrsz));
}

function core_sha1(x, len) {
    x[len >> 5] |= 0x80 << (24 - len);
    x[((len + 64 >> 9) << 4) + 15] = len;
    var w = Array(80);
    var a = 1732584193;
    var b = -271733879;
    var c = -1732584194;
    var d = 271733878;
    var e = -1009589776;
    for (var i = 0; i < x.length; i += 16) {
        var olda = a;
        var oldb = b;
        var oldc = c;
        var oldd = d;
        var olde = e;
        for (var j = 0; j < 80; j++) {
            if (j < 16) w[j] = x[i + j];
            else w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
            var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j)));
            e = d;
            d = c;
            c = rol(b, 30);
            b = a;
            a = t;
        }
        a = safe_add(a, olda);
        b = safe_add(b, oldb);
        c = safe_add(c, oldc);
        d = safe_add(d, oldd);
        e = safe_add(e, olde);
    }
    return Array(a, b, c, d, e);
}

function sha1_ft(t, b, c, d) {
    if (t < 20) return (b & c) | ((~b) & d);
    if (t < 40) return b ^ c ^ d;
    if (t < 60) return (b & c) | (b & d) | (c & d);
    return b ^ c ^ d;
}

function sha1_kt(t) {
    return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514;
}

function safe_add(x, y) {
    var lsw = (x & 0xFFFF) + (y & 0xFFFF);
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    return (msw << 16) | (lsw & 0xFFFF);
}

function rol(num, cnt) {
    return (num << cnt) | (num >>> (32 - cnt));
}

function str2binb(str) {
    var bin = Array();
    var mask = (1 << chrsz) - 1;
    for (var i = 0; i < str.length * chrsz; i += chrsz) bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i);
    return bin;
}

function binb2b64(binarray) {
    var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    var str = '';
    for (var i = 0; i < binarray.length * 4; i += 3) {
        var triplet = (((binarray[i >> 2] >> 8 * (3 - i % 4)) & 0xFF) << 16) | (((binarray[i + 1 >> 2] >> 8 * (3 - (i + 1) % 4)) & 0xFF) << 8) | ((binarray[i + 2 >> 2] >> 8 * (3 - (i + 2) % 4)) & 0xFF);
        for (var j = 0; j < 4; j++) {
            if (i * 8 + j * 6 > binarray.length * 32) str += b64pad;
            else str += tab.charAt((triplet >> 6 * (3 - j)) & 0x3F);
        }
    }
    return str;
}

function doIt() {
    var master = window.prompt('Enter your master password');
    if (master != '' && master != null) {
        host = document.location.href.match(/http(s*):\/\/([^/]+)/)[2];
        if (sld = host.match(/([^.]+\.([a-z][a-z][a-z]+|a[^abhjkpvy]|b[^cdklnpqux]|c[^bejkpqsty]|d[ejkmoz]|e[cegsu]|f[imor]|g[^cjkouvxz]|h[kmnrtu]|i[demnoqrst]|j[eop]|k[gimnpryz]|l[abcikrstuvy]|m[^bfijmz]|n[acefgloru]|om|p[aefhklmnrstwy]|qa|r[eosuw]|s[^fpqsw]|t[^abeiqrsuxy]|u[agsyz]|v[aceginu]|w[fs]|yt))$/i)) {
            domain = sld[0];
        } else {
            domain = host.match(/([^.]+\.[^.]+\.[a-z][a-z])$/i)[0];
        }
        var i = 0,
            j = 0,
            p = b64_sha1(master + ':' + domain).substr(0, 13) + '@1a',
            E = document.getElementsByTagName('input'),
            g = false;;
        for (j = 0; j < E.length; j++) {
            D = E[j];
            if (D.type == 'password') {
                D.value = p;
                D.focus();
                g = true;
            }
            if (D.type == 'text') {
                if (D.name.toUpperCase().indexOf('PASSWORD') != -1 || D.name.toUpperCase().indexOf('PASSWD') != -1) {
                    D.value = p;
                    D.focus();
                    g = true;
                }
            }
        }
        if (!g) {
            window.prompt('Your password for ' + domain + ' is', p)
        }
    }
}
doIt();
void(null);

Jeśli nie chcesz automatycznie uzupełniać hasła, po prostu usuń pętlę for na końcu bookmarkletu.

Wniosek:

Mam nadzieję, że znalazłeś coś przydatnego dla swoich potrzeb,

Teraz możemy powiedzieć, że bookmarklety mogą zrobić kilka całkiem interesujących rzeczy, ten mały kawałek kodu może zrobić dla ciebie ciężką pracę.

Jeśli jesteś zainteresowany stworzeniem własnej bookmarkletu , możesz skorzystać z tych zasobów wymienionych poniżej.

Kreator zakładek  (tylko http)

https://mrcoles.com/bookmarklet/

https://caiorss.github.io/bookmarklet-maker/

Tekst oryginalny