2013-12-18 97 views
0

我正在嘗試構建一個允許用戶保存報價(文本塊)的瀏覽器書籤 - 並且按下書籤 - 將保存報價以及時間戳和URL他們的個人資料內的網絡應用Bookmarklet for Saving研究引文

你可以看到我在下面寫的代碼,但遇到一些問題。

  1. 很好地包裝代碼以在小書籤中工作。

  2. 顯然,使用$ post可能會很沉重,因爲有些頁面會要求它被書籤添加。

有關如何進行的任何想法?

你能看到我在這裏目前http://jsfiddle.net/Rh7zx/1/

(function() { 
    function getSelectionHtml() { 
    var html = ""; 
    if (typeof window.getSelection != "undefined") { 
     var sel = window.getSelection(); 
     if (sel.rangeCount) { 
      var container = document.createElement("div"); 
      for (var i = 0, len = sel.rangeCount; i < len; ++i) { 
       container.appendChild(sel.getRangeAt(i).cloneContents()); 
      } 
      html = container.innerHTML; 
     } 
    } else if (typeof document.selection != "undefined") { 
     if (document.selection.type == "Text") { 
      html = document.selection.createRange().htmlText; 
     } 
    } 
    return html; 
} 

function saveToBiblio() { 

    var url = window.location; 
    var dateSaved = new Date(); 
    var selectedText = getSelectionHtml(); 

    console.log(url + dateSaved + selectedText); 

    /* 
    do the $post here 
    */ 
} 
)(); 
+0

*「很顯然,使用$發佈可能無法跨瀏覽器工作。」*它可以很好地跨瀏覽器工作,但它不會在沒有加載jQuery的頁面上工作,並且它會相當重量級爲書籤添加jQuery到這個頁面。 –

+0

啊,對不起 - 你說得很對。所以我只需要包含jquery,如果它尚未加載? – user2656127

+0

也稍微不確定如何在小書籤中使用這兩個功能。我應該換成一個嗎? – user2656127

回答

1

1)包裝,代碼很好的書籤工作。

小書籤只是使用javascript:僞協議編碼成URL的JavaScript代碼。有幾個網站和工具會把你的代碼變成書籤。最基本的就是讓代碼運行時發生你想要做的事情。你的代碼目前定義了兩個函數,但不是其中任何一個都可以調用。你想打電話給相關的人。這也是一般最好能包住你的書籤的代碼在一個範圍的功能,這樣你就不會添加到頁面的全局命名空間(因爲發生衝突的可能性):

(function() { 
    // Your code here 
)(); 

一些書籤廠商可以有一個選擇爲你做這件事,但是自己做就是微不足道的。

2)顯然,使用$發佈可能無法跨瀏覽器。

這將很好地跨瀏覽器工作,但不會在沒有jQuery加載的頁面中工作,並且將jQuery加載到頁面中可能是矯枉過正的。我會直接使用XMLHttpRequest

+0

這是對的,抱歉讓你惱火,但是當小書籤被點擊/腳本加載時,我不應該調用函數嗎? – user2656127

+0

@ user2656127:是的。 **只有當小書籤被觸發時,所有代碼纔會運行。在小書籤被觸發之前,它都不會運行。 –

+0

這是怎麼回事? http://jsfiddle.net/Rh7zx/ – user2656127