2011-11-10 32 views
5

Tôi có một vài blog được liên kết với tài khoản Tumblr của mình, nhưng bookmarklet luôn chọn blog "chính" của tôi (blog đầu tiên trong danh sách).Làm cách nào để sửa đổi bookmarklet tumblr để đăng lên một blog tumblr cụ thể?

Làm cách nào để sửa đổi bookmarklet để nó tự động chọn một blog cụ thể? Tôi muốn có nhiều liên kết bookmarklet, ví dụ: . "Chia sẻ trên blog1", "Chia sẻ trên blog2" vì vậy mà tôi không cần phải tự chọn blog để tạo ra các bài trong

Mặc định Tumblr bookmarklet trông như thế này:

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) 
+1

Câu hỏi hay. Rất thích biết câu trả lời. – jnthnclrk

+0

Bạn có sẵn sàng sử dụng các tập lệnh GreaseMonkey không? –

+0

Greasemonkey có hoạt động trên các trình duyệt di động không? – jnthnclrk

Trả lời

1

Cho bookmarklet một tham số 'channel_id' bài đó là 'example_blog_name' trong 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; 
+1

Tôi không thể làm điều đó để làm việc cả. – jnthnclrk

+0

@trnsfrmr Lỗi là gì? Chuỗi truy vấn bạn đã chuyển với yêu cầu của bạn là gì? "Tôi không thể làm điều đó để làm việc ở tất cả" không phải là rất xây dựng nếu bạn đang thực sự cố gắng, trên thực tế, để có được nó để làm việc. – KyleWpppd

+0

Tôi nhận được yêu cầu từ chối, xem pic: http://imgur.com/TgwtD. @ KyleWppd, nó có hiệu quả với bạn không? – jnthnclrk

1

sử dụng một sự kết hợp của một kịch bản người dùng, và một chút tinh chỉnh để bookmarklet, đây là giải pháp của bạn:

01.235.

Cài đặt này như một 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)); 
    } 
}; 

Lưu này như bookmarklet của bạn sau khi chỉnh sửa biến BLOG_NAME. Nhập chính xác như trong menu thả xuống. Ngoài ra, có thể bạn sẽ phải chạy nó qua UglifyJS để biến nó thành một bookmarklet.

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); 
Các vấn đề liên quan