Greasy Fork is available in English.
Tumblr. extend shortcut key for blog select and reblog button
当前为
// ==UserScript==
// @name Tumblr. extend shortcut key
// @namespace http://www.sharkpp.net/
// @version 0.1
// @description Tumblr. extend shortcut key for blog select and reblog button
// @author sharkpp
// @copyright 2014, sharkpp
// @license MIT License
// @include https://www.tumblr.com/dashboard*
// @include https://www.tumblr.com/reblog/*
// @include https://www.tumblr.com/blog/*
// @include https://www.tumblr.com/tagged/*
// @include https://www.tumblr.com/search/*
// ==/UserScript==
(function ()
{
var blogs = [];
var actionPublishNow, actionQueue, actionDraft, postButton;
var onshortcutkey = function (e) {
if (e.altKey) {
if (0x31 <= e.keyCode && e.keyCode <= 0x39) { // Alt + '1'
var n = (e.keyCode - 0x30) - 1;
if (blogs[n])
blogs[n].click();
return false;
} else if (0x52 == e.keyCode) { // Alt + 'r'
actionPublishNow.click();
postButton.click();
return false;
} else if (0x45 == e.keyCode) { // Alt + 'e'
actionQueue.click();
postButton.click();
return false;
} else if (0x44 == e.keyCode) { // Alt + 'd
actionDraft.click();
postButton.click();
return false;
}
return true;
}
};
var onkeydown = function (e) {
e = e || window.event; // for IE
if (e.altKey) {
if (0xE5 == e.keyCode) {
return false;
} else {
return onshortcutkey(e);
}
}
};
var onkeyup = function (e) {
e = e || window.event; // for IE
if (e.altKey) {
return onshortcutkey(e);
}
};
var addShortcutKeyElements = function (elm, keys) {
for (var i = 0, s; s = keys[i]; i++) {
var span = document.createElement('span');
span.style.cssText = ['border:1px solid #ccc',
'border-radius:5px',
'border-width:1px 1px 5px 5px',
'padding:2px'].join(';');
span.innerHTML = s;
elm.appendChild(span);
if (i + 1 < keys.length)
elm.appendChild(document.createTextNode(' + '));
}
};
var fn = function () {
var itemBlogs = document.evaluate('//*[@id="tumblelog_choices"]/div/div/ul/li', document,
null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
if (itemBlogs.snapshotLength &&
2 == itemBlogs.snapshotItem(0).firstChild.childNodes.length)
{
// get elements
var items;
items = document.evaluate('//*[@id="post_options"]/div/div/ul/li[1]/div', document, null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
actionPublishNow = items.snapshotLength ? items.snapshotItem(0) : actionPublishNow;
items = document.evaluate('//*[@id="post_options"]/div/div/ul/li[2]/div', document, null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
actionQueue = items.snapshotLength ? items.snapshotItem(0) : actionQueue;
items = document.evaluate('//*[@id="post_options"]/div/div/ul/li[4]/div', document, null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
actionDraft = items.snapshotLength ? items.snapshotItem(0) : actionQueue;
items = document.evaluate('//*[@id="create_post"]/button', document, null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
postButton = items.snapshotLength ? items.snapshotItem(0) : postButton;
// display shortcut key
for (var i = 0, item; item = itemBlogs.snapshotItem(i); i++) {
var div = document.createElement('div');
div.style.cssText = ['margin-right:25px',
'text-align:right',
'height:100%',
'line-height:25px'].join(';');
addShortcutKeyElements(div, ["alt", (i + 1).toString()]);
item.firstChild.appendChild(div);
// save blog list
blogs[i] = item.firstChild;
}
for (var i = 0, item, list = [actionPublishNow, actionQueue, actionDraft],
scList = ['R', 'E', 'D']; item = list[i]; i++) {
var div2 = document.createElement('div');
div2.style.cssText = ['text-align: right',
'height: 100%',
'line-height: 25px',
'position: absolute',
'top: 0px',
'right: 10px'].join(';');
addShortcutKeyElements(div2, ["alt", scList[i]]);
var div = document.createElement('div');
div.style.cssText = ['width: 200px'].join(';');
div.appendChild(div2);
item.appendChild(div);
}
// register shortcut key event
document.onkeydown = onkeydown;
document.onkeyup = onkeyup;
var fn2 = function () {
var tinymce = document.getElementById('post_two_ifr');
if (!tinymce)
setTimeout(fn2, 500);
else
tinymce.contentWindow.document.onkeydown = onkeydown;
tinymce.contentWindow.document.onkeyup = onkeyup;
};
setTimeout(fn2, 500);
}
setTimeout(fn, 1000);
};
setTimeout(fn, 1000);
})();