Как изменить букмарклет Tumblr для публикации в определенном блоге Tumblr? - PullRequest
5 голосов
/ 10 ноября 2011

У меня есть пара блогов, связанных с моей учетной записью Tumblr, но bookmarklet всегда выбирает мой "основной" блог (первый в списке).

Как я могу изменитьбукмарклет, чтобы он автоматически выбирал конкретный блог?Я хотел бы иметь несколько ссылок на букмарклет, например «Поделиться в блоге 1», «Поделиться в блоге 2», чтобы мне не приходилось вручную выбирать, в каком блоге создавать запись.

Tumblr по умолчаниюБукмарклет выглядит так:

javascript: var d = document,
    w = window,
    e = w.getSelection,
    k = d.getSelection,
    x = d.selection,
    s = (e ? e() : (k) ? k() : (x ? x.createRange().text : 0)),
    f = 'http://www.tumblr.com/share',
    l = d.location,
    e = encodeURIComponent,
    p = '?v=3&u=' + e(l.href) + '&t=' + e(d.title) + '&s=' + e(s),
    u = f + p;
try {
    if (!/^(.*\.)?tumblr[^.]*$/.test(l.host)) throw (0);
    tstbklt();
} catch (z) {
    a = function () {
        if (!w.open(u, 't', 'toolbar=0,resizable=0,status=1,width=450,height=430')) l.href = u;
    };
    if (/Firefox/.test(navigator.userAgent)) setTimeout(a, 0);
    else a();
}
void(0)

Ответы [ 2 ]

1 голос
/ 01 сентября 2012

Используя комбинацию пользовательского скрипта и небольшую настройку букмарклета, вот ваше решение:

Установите его как UserScript :

var selectOption = function (elem, value) {
    var options = elem.options;
    for(var i = 0; i < options.length; i++){
        if(options[i].innerHTML === value){
            elem.selectedIndex = i;
        }
    }
};

window.onload = function (){
    if(location.href.indexOf('tumblr.com/share') !== -1){
        selectOption(document.getElementById('channel_id'), location.hash.slice(1));
    }
};

Сохраните это как свой букмарклет после редактирования переменной BLOG_NAME.Введите его точно так же, как в раскрывающемся списке.Кроме того, вам, вероятно, придется запустить его через UglifyJS , чтобы сделать его букмарклетом.

javascript: var BLOG_NAME = 'Test',
    d = document,
    w = window, 
    e = w.getSelection,
    k = d.getSelection,
    x = d.selection,
    s = (e ? e() : (k) ? k() : (x ? x.createRange().text : 0)),
    f = 'http://www.tumblr.com/share',
    l = d.location,
    e = encodeURIComponent,
    p = '?v=3&u=' + e(l.href) + '&t=' + e(d.title) + '&s=' + e(s),
    u = f + p;
try {
    if (!/^(.*\.)?tumblr[^.]*$/.test(l.host)) throw (0);
    tstbklt();
} catch (z) {
    a = function () {
        if (!w.open(u + '#' + BLOG_NAME, 't', 'toolbar=0,resizable=0,status=1,width=450,height=430')) l.href = u;
    };
    if (/Firefox/.test(navigator.userAgent)) setTimeout(a, 0);
    else a();
}
void(0);
1 голос
/ 10 декабря 2011

Дайте букмарклету 'channel_id' параметр записи, который равен 'example_blog_name' in example_blog_name.tumblr.com

javascript: var d = document,
    w = window,
    e = w.getSelection,
    k = d.getSelection,
    x = d.selection,
    s = (e ? e() : (k) ? k() : (x ? x.createRange().text : 0)),
    f = 'http://www.tumblr.com/share',
    l = d.location,
    e = encodeURIComponent,
    c = 'example_blog_name',
    p = '?v=3&u=' + e(l.href) + '&t=' + e(d.title) + '&s=' + e(s) + '&channel_id=' + e(c),
    u = f + p;
...