【问题标题】:How can I modify the tumblr bookmarklet to post to a specific tumblr blog?如何修改 tumblr 小书签以发布到特定的 tumblr 博客?
【发布时间】:2011-11-10 00:59:26
【问题描述】:

我有几个博客链接到我的 Tumblr 帐户,但 bookmarklet 总是选择我的“主要”博客(列表中的第一个)。

如何修改小书签以便它自动选择特定博客?我想要多个书签链接,例如“在 blog1 上分享”、“在 blog2 上分享”这样我就不必手动选择在哪个博客中创建帖子了。

默认 Tumblr bookmarklet 如下所示:

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)

【问题讨论】:

标签: javascript blogs bookmarklet tumblr


【解决方案1】:

给小书签一个'channel_id' post 参数,即'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;

【讨论】:

  • @trnsfrmr 错误是什么?您随请求传递的查询字符串是什么?如果您实际上正在尝试使其发挥作用,那么“我根本无法使其发挥作用”并不是很有建设性。
  • 我的请求被拒绝,请参见图片:imgur.com/TgwtD。 @KyleWppd,它对你有用吗?
  • @trnsfrmr 你能粘贴你实际发送的请求吗?另外,您必须登录并能够发布到 channel_id/example_blog_name 才能获得 403。
  • 啊,我没有登录。一旦登录到 Tumblr 帐户,它就会工作。嗯,我认为问题是要求可以处理多个 Tumblr 帐户的东西。必须登录并登录才能进行切换,这是一个非常令人厌烦的工作流程。
  • @jnthnclrk:不是多个帐户,而是多个博客(都在同一个帐户上)。
【解决方案2】:

结合使用用户脚本,并对小书签稍作调整,这是您的解决方案:

将此安装为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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 2012-09-09
    相关资源
    最近更新 更多