最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js 創(chuàng)建書簽小工具之理論

 更新時間:2011年02月25日 23:42:10   作者:  
書簽小工具(Bookmarklets)是一個非常棒的javascript代碼小片斷偽裝成的小應用,它駐留在你的瀏覽器里并為網(wǎng)頁提供額外的功能。這里我們將研究如何從頭開始創(chuàng)建一個書簽小工具及一些最佳實踐的建議。
我們一直在尋找增加瀏覽體驗的方法,有的方法眾所周知,有的則鮮為人知。我原本認為書簽小工具屬于后者,非常令人討厭的東西。令我非常懊惱的是我發(fā)現(xiàn)在這個問題上我完全是錯誤的。它并不是令人厭煩的,而是以用戶為中心的,能實現(xiàn)很多出色的功能,而且就像人們所預期的一樣,它成為了我與瀏覽者以及網(wǎng)絡(luò)交互的核心部分。
這里我想向你介紹開發(fā)書簽小工具以實現(xiàn)一些精妙的書簽的全過程。是的,書簽,我們將創(chuàng)建不只一個書簽,即使是非常小的書簽。很好奇嗎?我們開始吧!

究竟什么是書簽小工具呢?
引用前文的話:
書簽小工具是一個非常棒的javascript代碼小片斷偽裝成的小應用,它駐留在你的瀏覽器里并為網(wǎng)頁提供額外的功能,僅僅只需要點擊一下。

這個詞是bookmark和applet的合成詞,也叫做收藏小工具(favelets),這個小的javascript片斷讓你可以在瀏覽任何頁面時召喚出額外的功能。因為它們只有javascript構(gòu)成,所以它們是可移動的,可以支持所有的瀏覽器,甚至是移動設(shè)備和平板設(shè)備的。安裝它們也相當簡單,只需要將它們拖到收藏夾就行了!

那么,什么是關(guān)鍵呢?
關(guān)鍵之處在于書簽小工具認你可以做很多原本要以開發(fā)人員為中心才能做的事情。任何通過書簽小工具能獲得的功能你都可以使用瀏覽器的控制臺花費很少的時間而獲得。書簽小工具簡化了這個過程,將實現(xiàn)一些功能的代碼打包在一個小小的按鈕里。書簽小工具大體上來說可以分為以下幾類:

用于傳輸數(shù)據(jù)。它用于將頁面提交到特定的服務(wù)。處理社交媒體,查字典,搜索都屬于這一類。我們將創(chuàng)建一個提交信息到Reddit(一個新聞網(wǎng)站)的書簽小工具。
用于獲取信息或修改當前頁面的。我們將創(chuàng)建一個設(shè)置網(wǎng)頁背景色的小工具。
用于后臺運作。清除當前網(wǎng)站cookie的書簽小工具是一個主要的例子,我們將下面創(chuàng)建一個。
1、開始
你需要記住的第一點就是在所有javascript代碼前綴上“javascript”URI。瀏覽器實現(xiàn)了特定的前綴因此前綴后面的內(nèi)容可以被當作javascript代碼正確的處理,解析。
例如,點擊“這個鏈接”(代碼如下)將會強出一個對話框。
復制代碼 代碼如下:

<a href="javascript: alert('文字鏈接');">這個鏈接</a>

2、包裝成匿名函數(shù)
記住你的代碼將運行于當前加載的頁面,它可能會擁有自己的javascript代碼,這意味著可能和書簽小工具的代碼存在沖突。最后你需要做的是讓你的小工具中止當前頁面。
將你的代碼包裝在一個匿名函數(shù)里可以保證沒有名稱沖突。此外,javascript新手將會被搞混并認為你是上帝,如果你這樣做的話。
復制代碼 代碼如下:

javascript:(function(){// your code here })();

當你在其它地方使用javascript代碼時這也是適當,時刻注意保持自己的代碼隔離。
3、按需外部化
書簽小工具不一定要很小,你可以需要多大就寫多大。在這種些情況下,為了發(fā)布方便并在不讓用戶手動干預的情況下保持代碼為最新,最好是創(chuàng)建一個獲取需要的代碼的封裝。
復制代碼 代碼如下:

javascript: (function () {
var jsCode = document.createElement('script');
jsCode.setAttribute('src', 'http://path/to/external/file.js');
document.body.appendChild(jsCode);
}());

上面的代碼變得美化了許多,它創(chuàng)建了一個script標簽,將src屬性設(shè)置成其它地方的一個文件,然后最終將它附加到文檔中。通過這種方法,無論你哪上部分代碼發(fā)生變化,你可以部署你修改后的文件并立刻傳播到每一個用戶。

注意:這不僅限于javascript。如果你的書簽小工具使用前端,你也可以自由地引入外部HTML和CSS,使得你的小工具真正的自動更新。

4、謹慎地添加類庫
如果你要創(chuàng)建一個大型的書簽工具,你可能需要一個javascript類庫。但是在你的頁面里使用它們不僅僅只是將它們包含進來那么簡單,你需要保證這個庫不是已經(jīng)存在了的。像jQuery和MooTools這樣占有很大市場的類庫你得仔細的處理來確保它預先沒有被載入。
另一方面網(wǎng)頁可能已經(jīng)載入了其它類庫,可能會導致“$”符號組件沖突。版本沖突在一些情況下也會出現(xiàn),所以也要注意。

這里是一段我代碼中使用的腳本。注意,在你的代碼中你需要注意我上面說的幾點。
復制代碼 代碼如下:

if (!($ = window.jQuery)) { // typeof jQuery=='undefined' works too
script = document.createElement( 'script' );
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
script.onload=releasetheKraken;
document.body.appendChild(script);
}
else {
releasetheKraken();
}

function releasetheKraken() {
// The Kraken has been released, master!
// Yes, I'm being childish. Place your code here
}

這段代碼的含義應該很明確了,我們簡單地過一下。

首先我們通過判斷jQuery對象是不是存在于名稱空間里來確定jQuery是不是已經(jīng)被加載了。
如果不存在,我們引入它。我們根據(jù)最佳實踐能過CDN來載入它。最后我們確保指向包含要執(zhí)行的代碼的程序主函數(shù)。
如果已存在,直接運行主函數(shù)。
如果你覺得解決這個問題很麻煩,我強烈推薦Ben Alman的“書簽小工具生成器”。它用一種很完全的方法解決全稱空間和版本沖突。好東西!

5、非不得已不要搞亂母頁
這一點太重要了。如果不小心破壞了母頁,書簽小工具就是毫無用處的。請注意javascript并不是你唯一需要處理的東西。如果你有一個前端,HTML和CSS也會在頁面中運行。不要給你的容器和類取非常普通的名字,比如你把它叫做“container”,我會永遠討厭你。一種簡單的方法就是給所有名字添加具有工具特色的特別前綴(或者是后綴)字符串。當你寫CSS的時候,需要特別特別的特殊。使用樣式很不錯,但請使用最高的精度。如果有樣式泄漏到主頁面上是不合規(guī)范的,且會引發(fā)不信任。

6、測試,測試,再測試
如果你正創(chuàng)建一個較小的書簽小工具,它引用了脆弱的第三方的類庫,你可能會碰到永遠的噩夢——跨瀏覽器兼容性問題??雌饋砗苊黠@但是這是很多人很多時候都會忘記的一點。
另一個陷阱是希望能工作在所有網(wǎng)站上的小工具只工作在幾個網(wǎng)站上。網(wǎng)頁可以有不同的層次,使用不同的方法論。有些網(wǎng)站可能包含了HTML5并且使用了相關(guān)的容器而其它的可能安全起見使用了通用的div標簽。在收集信息的時候確??紤]了每一種情況。

相關(guān)文章

  • JavaScript創(chuàng)建對象的方式小結(jié)(4種方式)

    JavaScript創(chuàng)建對象的方式小結(jié)(4種方式)

    這篇文章主要介紹了JavaScript創(chuàng)建對象的方式,結(jié)合實例形式總結(jié)分析了四種創(chuàng)建對象的方式,并附帶分析了JavaScript對象復制的技巧,需要的朋友可以參考下
    2015-12-12
  • 有趣的script標簽用getAttribute方法來自腳本吧

    有趣的script標簽用getAttribute方法來自腳本吧

    有趣的script標簽用getAttribute方法來自腳本吧...
    2007-03-03
  • 35個JS中實用工具函數(shù)的代碼分享

    35個JS中實用工具函數(shù)的代碼分享

    身為后臺開發(fā)的各位鐵鐵,實際開發(fā)不管是公司要求或是自身發(fā)展,學前端已經(jīng)是我們內(nèi)卷路上必定碰到的,那今天小編就給大家總結(jié)下那些我們工作中可能遇到的一些實用Js函數(shù)
    2022-06-06
  • 微信小程序阻止小程序返回的兩種方法

    微信小程序阻止小程序返回的兩種方法

    這篇文章主要給大家介紹了關(guān)于微信小程序阻止小程序返回的兩種方法,分別是通過wx.enableAlertBeforeUnload和page-container,兩種方法都給出了詳細的實例,需要的朋友可以參考下
    2023-04-04
  • JavaScript中附件預覽功能實現(xiàn)詳解(推薦)

    JavaScript中附件預覽功能實現(xiàn)詳解(推薦)

    這篇文章主要介紹了JavaScript中附件預覽功能的實現(xiàn),具體操作步驟大家可查看下文詳細講解,感興趣的小伙伴們可以參考一下。
    2017-08-08
  • sencha ext js 6 快速入門(必看)

    sencha ext js 6 快速入門(必看)

    下面小編就為大家?guī)硪黄猻encha ext js 6 快速入門(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 用js生成a標簽下載文件并攜帶請求頭的兩種方法

    用js生成a標簽下載文件并攜帶請求頭的兩種方法

    這篇文章主要給大家介紹了關(guān)于用js生成a標簽下載文件并攜帶請求頭的兩種方法, 這種下載文件方式在前端項目中非常常見,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • Js數(shù)組排序函數(shù)sort()介紹

    Js數(shù)組排序函數(shù)sort()介紹

    本文給大家簡單探討下Js數(shù)組排序函數(shù)sort()的用法和示例,有需要的小伙伴可以參考下。
    2015-06-06
  • 小程序?qū)崿F(xiàn)點擊動畫效果

    小程序?qū)崿F(xiàn)點擊動畫效果

    這篇文章主要為大家詳細介紹了小程序?qū)崿F(xiàn)點擊動畫效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 通過js給網(wǎng)頁加上水印背景實例

    通過js給網(wǎng)頁加上水印背景實例

    這篇文章主要介紹了通過js給網(wǎng)頁加上水印背景實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,,需要的朋友可以參考下
    2019-06-06

最新評論

长沙市| 黔南| 宜良县| 丰原市| 罗源县| 札达县| 仲巴县| 东兰县| 兖州市| 建水县| 三穗县| 安远县| 德令哈市| 龙江县| 三都| 长岛县| 金沙县| 平乐县| 杂多县| 友谊县| 安福县| 汪清县| 锦屏县| 丰原市| 鄂尔多斯市| 洞头县| 东宁县| 肃北| 靖江市| 介休市| 罗定市| 顺昌县| 商南县| 平南县| 兴国县| 基隆市| 普兰店市| 农安县| 麻城市| 伊吾县| 兰西县|