Buy Reviews
Powered by MaxBlogPress  

Archive for the ‘JavaScript’ Category

jQuery UI 的 Demos展示及說明文件

星期五, 一月 8th, 2010

去年我曾翻譯過ThemeRoller,今天再繼續介紹它的一些功能的demo展示及說明文件,說明文件如果有空的話,就再翻譯給大家閱讀!

jQuery UI 使用jQuery-風格、事件驅動架構及專注在網路標準、可及性、彈性樣式跟便於使用的的設計上提供了一整套核心互動的外掛程式、使用者介面的小工具(UI widgets)及視覺效果(visual effects),所有的外掛程式在IE 6.0+、 FF 2+、 Safari 3.1+、 Opera 9.0+、跟Google Chrome上經過測試相容。

互動

一些像是拖拉、調整大小、選擇跟排序等複雜的行為。

小工具

全功能的使用者介面控制 — 每個控制都有一些選項以及完全使用佈景。

佈景

    ThemeRoller

    星期一, 十二月 21st, 2009

    jquery ui有一個ThemeRoller功能看起來滿炫的,看它的說明好瞭解他在搞什麼?

    使用 ThemeRoller

    ThemeRoller 允許你設計訂製的jQuery UI佈景主體來跟你的專案緊密結合,要建構一個訂製的佈景主題,選擇Roll your own tab這一頁然後稍稍調整設定,在設定的時候,右邊的UI組件會根據你的設計來更新,然後你就可以下載你喜歡的佈景主題。

    假如你想要使用已經設計好的佈景主題,選擇Theme Gallery tab 這一頁,在陳列頁選擇其中一個佈景主題,你可以從那裡選擇下載或訂製任何佈景主題,然後要儲存佈景主題,只要將該網址加入書籤或是複製該網址。

    外掛程式開發者

    jQuery UI 現在採用了強大的自定義的CSS架構,這個架構不只用在我們自己的jQuery UI組件,也用在訂製的UI容器(wediget)的開發!!!參閱 jQuery UI 說明文件來學習更多關於新的jQuery UI CSS 架構。

    瀏覽器支援的注意

    ThemeRoller 使用CSS3 border-radius的屬性來做圓角,因為缺乏支援,在Internet Explorer圓角會變成方形出現,ThemeRoller目前也可以產生透明png圖像,我們會很快更新支援IE6的圖示,但暫時您會需要使用pngfix外掛程式來取得IE6漂亮的圖示。

    這個看起來真的很炫,可以好好利用!

    jquery開發工具

    星期三, 十月 7th, 2009

    要使用jquery能夠視覺化呈現DOM的家族樹結構,開發工具有:

    B-1 for Firefox:

    Firebug:http://www.getfirebug.com

    Web Developer Toolbar:http://chrispederick.com/work/web-developer/

    Venkman:http://www.mozilla.org/projects/venkman

    正規表示式測試器: http://sebastianzartner.ath.cx/new/downloads/RExT/

    B-2 for IE:

    Microsoft Internet Explorer Developer Toolbar:http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038

    Microsoft Visual Web Developer:http://msdn.microsoft.com/vstudio/express/vwd/

    Microsoft Visual Web Developer(免費版本):http://www.berniecode.com/blog/2007/03/08/how-debug-javascript-with-visual-web-developer-express/

    DebugBar:http://www.debugbar.com/

    Drip:http://sourceforge.net/projects/ieleak/

    B-3 for Safari:

    Develop Menu:Safari 3.1版後的功能

    Web Inspector:http://trac.webkit.org/projects/webkit/wiki/Web%20Inspector

    Drosera:http://trac.webkit.org/wiki/Drosera

    B-4 for Opera:

    Dragonfly:開發中

    B-5 for 其他工具:

    Firebug Lite:http://www.getfirebug.com/lite.html

    BitobiBug:http://www.nitobibug.com

    TextMate jQuery套件:http://github.com/kswedberg/jquery-tmbundle

    Charles:http://www.xk72.com/charles

    Fiddler:http://www.fiddlertools.com/fiddles

    Aptana:http://www.aptana.com

    jQuery開發實戰

    星期三, 十月 7th, 2009


    jQuery開發實戰,這是繼網頁設計?愛上jQuery之後,ㄚ琪借來看的第二本jquery的書!
    很多程式都不斷將jquery納入,jquery無所步入無所不在,可說是應用最廣泛的程式了,看我能不能學得更高心法來分享!

    如何做像John Chow那樣的滑動重點文章

    星期一, 九月 7th, 2009

    看到John Chow的首頁是不是有5篇文章的圖片及說明在那邊滑來滑去,ㄚ琪從原始碼看到,很有可能是jquery.jcarousel.pack.js,這個javascript檔在運作,所以就Google了一下,發現Jesse,的這一篇Featured Post Slider Like The Pros Using jCarousel How To得到很大的幫助,特別情商Jesse允許我翻成中文,供華人同胞使用。

    以下是譯文:

    最近我在寫關於文章的重點及其對你的SEO工作的重要性,要完成這個需求我在站上使用一個外掛稱作featured content gallery,它是有效的但卻很臃腫、很慢並且跟我在我的站上所測試的很多其他的東西相衝,所以我開始結束這個測試並尋找更有效、更快並且乾淨的的方式來顯示我的重點內容,我搜尋了網路結果沒有找到我想要的,所以我決定自己動手來解決我自己的問題。

    現在我已經可以在這個站上執行,而且我將分享如何操作,這樣有這樣需求的人就可以找到並且從中獲益,這個靈感是來自 johnchow.com顯示他的重點文章的方式,所以我開始看它如何在他的站上如何作,這個引導我找到jCarousel以及其他的歷史,只要按照下面的步驟你就可以在你的WordPress使用這個解決方案來讓你的部落格很有威力,就像我在AdminDaily.com這裡所做的這樣。

    1. 下載 jCarousel 按這裡
    2. 解壓縮zip檔,然後將javascript檔 jquery.jcarousel.pack.js上傳到你的伺服器上根目錄下的js資料夾中,(ㄚ琪加註:根據JohnChow的原始碼,其實我另外下載了jquery-1.2.6.pack.js,好像要這樣才能go)
    3. 照著下面的指示新增檔案及修改你的佈景,在做這之前一定要先備份,如果你不備份,錯了,你會死得很慘,哈哈!

    首先,我們要新增一個featured.php,然後放在你的wp-content/themes/你要用的佈景/includes的資料夾下,這個檔案有下面的程式,我會個別解釋涵是的每個部份。

    在檔案的最上面,我們需要見一個容器給重點文章滑塊用,所以你有一個開頭的div及開頭的無序列表像這樣:

    <div id=』featured』>
    <ul id=』posts』>

    在下面,我們將使用自訂的WordPress查詢來獲得我們想要的文章,開始一個counter計數器來追蹤文章編號,然後開始迴圈來顯示我們的文章,在這個例子裡,我會從Featured類別使用最後5篇文章,你改成你喜歡的。(ㄚ琪註:我又自己改程式為最多人點閱的為重點文章)

    <?php $my_query = new WP_Query(‘category_name=Featured&showposts=5′); ?>
    <?php $count = 0; ?>
    <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
    <?php $count++; ?>

    繼續往下面走,我們將要含括程式碼,這個程式碼是迴圈要顯示每篇文章用的,再說一次這只是個範例你可以改成適合你的特殊需求,這是我用在我站上的也是我需要的。

    就如你所見,上面的程式碼會從Featured類別查詢最後5篇文章,然後使用while迴圈敘述顯示每篇文章,然後結尾有一個endwhile敘述,假如你想要看看每一段的程式碼,就像這樣:

    <li id=』post-<?php echo $count ?>』>
    <a href=』<?php the_permalink() ?>』><img src=』<?php echo get_post_meta($post->ID, ‘thumbnail’,true) ?>』 alt=』<?php the_title(); ?>』 /></a>
    <h3><a href=』<?php the_permalink() ?>』><?php the_title(); ?></a></h3>
    <div>
    <p><?php echo get_post_meta($post->ID, ‘feat_txt’,true) ?></p>
    </div>
    <div></div>
    <a href=』<?php the_permalink() ?>』>read more &raquo;</a>
    </li>
    <?php endwhile; ?>
    </ul>

    最後,我們加入最後的吳續列表到最後,這會顯示編號按鈕來點擊以顯示文章在滑塊中,編號從1到5,像這樣:

    <ul>
    <li><a href=』#post-5″>5</a></li>
    <li><a href=』#post-4″>4</a></li>
    <li><a href=』#post-3″>3</a></li>
    <li><a href=』#post-2″>2</a></li>
    <li><a href=』#post-1″>1</a></li>
    </ul>
    </div>

    按這裡 來下載完整的featured.php檔來儲存你的的複製上 :-)

    目前為止都很簡單吧?現在我們移到我們的佈景檔案這裡作編輯,首先我們要先開始動header.php檔,在這個檔案裡我們需要增加 jCarousel程式,這個程式是我們之前上傳到根目錄下的 js資料夾中的,然後新增特別的函式來控制頁面滑塊的動作,我們也需要限制這個在首頁這裡來節省頁面載入的時間,可以在前面這裡用if (is_home())敘述,要完成這個,只要放下面的程式碼在你的header.php檔的</head>標籤前。 (很明顯的要更改src的部份來配合你的網域)

    <?php if ( is_home() ) { ?>
    <script src=』http://your.<a href=』http://admindaily.com/recommends/godaddy』 style=』" target=』_blank』 rel=』nofollow』 onmouseover=』self.status=’domain’;return true;』 onmouseout=』self.status=』』>domain</a>.com/js/jquery.jcarousel.pack.js』 type=』text/javascript』></script>
    <script type=』text/javascript』>
    function mycarousel_initCallback(carousel) {
    jQuery(‘#featured .list li a’).bind(‘click’, function() {
    carousel.scroll(jQuery.jcarousel.intval(jQuery(this).text()));
    return false;
    });
    };
    jQuery(document).ready(function() {
    jQuery(『#posts』).jcarousel({
    wrap: 『both』,
    auto: 10,
    scroll: 1,
    initCallback: mycarousel_initCallback,
    buttonNextHTML: null,
    buttonPrevHTML: null
    });
    });
    </script>
    <?php } ?>

    接下來,我們含括 featured.php檔在你想要顯示的地方使用php include 敘述像這樣:

    <?php include (TEMPLATEPATH . ‘/includes/featured.php’); ?>

    你可能會想要 featured.php含括在你的index.php佈景檔中,但是歡迎你調整你的品味來修改。

    現在我們有上傳檔案,需要修改的東西也好了,我們只要修改我們佈景的css檔新增一些樣式元素,這個部份是最要注意的,我放在這裡的程式碼適合用在我的站上來顯示我要的,你勢必修改這樣式才能適合你的需要,除非你的需要跟我的網站有一樣的寬度及顏色,在這裡另外要注意的,你必須檢查任何相衝的的元素來確認不會跟你現在站上的配置搞混 (只要改變featured.php的名稱及css檔的內容即可)

    #featured {
    width:100%;
    height: 199px;
    margin:0 0 25px;
    font:1.25em/1.5 georgia,serif;
    overflow: hidden;
    }
    #featured:after {
    content:』.』;
    display:block;
    height:0;
    font:0/0 serif;
    clear:both;
    visibility:hidden;
    }
    #featured h3 {
    font:1.47em/1.1 georgia,serif;
    margin:0 0 10px;
    color:#1e1e1e;
    }
    #featured h3 a {
    color:#4a8393;
    }
    #featured h3 a:visited {
    color:#4a8393;
    }
    #featured h3 a:hover,
    #featured h3 a:focus {
    text-decoration:underline;
    }
    #posts {
    width:636px;
    clear:both;
    overflow:hidden;
    }
    #posts li {
    float:left;
    width:636px;
    width/**/:/**/626px;
    padding:0 10px 0 0;
    }
    #posts li.first {
    margin:0;
    }
    #featured .thumb {
    float:left;
    border:1px solid #d7d7d7;
    margin:5px 10px 11px 0;
    }
    #featured p {
    padding:0 0 10px;
    }
    #featured .more-link {
    float:right;
    font-size:1.2em;
    padding:0 10px;
    margin:0 -10px -10px 0;
    position:relative;
    color:#fff;
    background:#404040;
    border:1px solid #333333;
    }
    #featured .list {
    float:left;
    display:inline;
    position:relative;
    font-size:.88em;
    line-height:2.1;
    font-family:arial,sans-serif;
    z-index:5;
    color:#333;
    width:527px;
    padding: 0px;
    margin:-30px 0 0 0px;
    background:#ffffff;
    border-bottom: 1px solid #eeeeee;
    }
    #featured .list li {
    float:right;
    }
    #featured .list li a {
    float:left;
    color:#333;
    background:#f6f6f6;
    border:1px solid #eaeaea;
    border-right:none;
    padding:0 8px;
    }
    #featured .list li a:visited {
    color:#444;
    }
    #featured .list li a:hover,
    #featured .list li a:focus {
    color:#fff;
    border:1px solid #333333;
    border-right:none;
    background:#404040;
    text-decoration:none;
    }
    #featured .jcarousel-container {
    width:646px;
    width/**/:/**/636px;
    padding:6px 0 0 10px;
    margin:0px;
    background:#ffffff;
    position:relative;
    float:left;
    display:inline;
    }
    #featured .jcarousel-clip {
    z-index:2;
    position:relative;
    overflow:hidden;
    width:636px;
    }
    #featured .jcarousel-list {
    z-index:1;
    overflow:hidden;
    position:relative;
    top:0;
    }
    .oops {
    clear:both;
    font-size:0;
    line-height:0;
    width:100%;
    overflow:hidden;
    display:block;
    }

    現在我們已經作完了,我們幾乎可以儲存所有的檔案並且開始使用jCarousel顯示這非常cool的重點文章滑動功能,現在要做的就是新增或編輯文章,將文章加到Featured類別,並且在每篇文章裡作一些簡單的設定來提供重點文章滑塊需要的資訊,只要每篇文章照著下面的步驟你就可以顯示你想要的文章在滑塊中。

    1. 新增新的或編輯現有的文章到Featured類別裡 (假如你沒有這個類別就新增它)
    2. 在新增自訂欄位這裡點擊輸入新的名稱,新增一個自訂欄位叫 feat_txt,這樣來顯示你要在滑塊中顯示的文字 (我建議大約20-30個字左右)
    3. 新增另一個圖檔的欄位叫thumbnail,用來顯示你要在重點文章滑塊中顯示的圖檔,並在欄位內容中放入你的圖檔完整 url,在我提供的這篇教學中我使用135px * 135px大小的尺寸來顯示圖檔。

    2009-09-07_163051

    就是這樣了,假如你有任何問題,請不要猶豫在這裡留言,我會很高興進我所能我會很高興進我所能來幫你。

    ㄚ琪因為在使用JohnChow跟這裡的教學混用的時候,會造成滑塊的文章位置錯誤,造成顯示有問題,後來經Jesse的指點,修改樣式元素的名稱,雖然一開始沒有看到正確的顯示,但是後來到別的電腦上看,發現式正常的,才想到可能瀏覽器有cache的問題,所以無法正常顯示,所以將瀏覽器的cache清除,重新執行也就可以正確顯示了!這是山寨化很成功的第一步喔!

    frepple Revision 951

    星期一, 五月 4th, 2009

    感覺就像做了一件善事!讓人覺得很快樂!

    Revision: 951
    http://frepple.svn.sourceforge.net/frepple/?rev=951&view=rev
    Author:   jdetaeye
    Date:     2009-04-30 15:25:19 +0000 (Thu, 30 Apr 2009)

    Log Message:
    ———–
    - Fix to support the broken browser IE6. Many thanks to Stephen Liu for the
    patch.

    Modified Paths:
    ————–
    trunk/AUTHORS
    trunk/contrib/django/freppledb/static/frepple.js

    Modified: trunk/AUTHORS
    ===================================================================
    — trunk/AUTHORS         2009-04-19 16:08:57 UTC (rev 950)
    +++ trunk/AUTHORS         2009-04-30 15:25:19 UTC (rev 951)
    @@ -1,12 +1,14 @@

    -The primary authors of frePPLe are:
    +The primary authors of frePPLe are:

    Johan De Taeye (jdetaeye at users.sourceforge.net)

    -And here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS

    +And here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS

    people who have submitted patches, reported bugs, and generally made
    -frePPLe that much better:
    +frePPLe that much better:

    - Tom Vergote (tom at think-wize.com)
    - Tobias Schlemmer (the_tsc at users.sourceforge.net)
    - J K (e_k at users.sourceforge.net)
    \ No newline at end of file
    + Tom Vergote (tom at think-wize dot com)
    + Tobias Schlemmer (the_tsc at users dot sourceforge dot net)
    + J K (e_k at users dot sourceforge dot net)
    + Stephen Liu (2notebook at yahoo dot com dot tw, http://job.achi.idv.tw)
    +
    \ No newline at end of file

    Modified: trunk/contrib/django/freppledb/static/frepple.js
    ===================================================================
    — trunk/contrib/django/freppledb/static/frepple.js         2009-04-19 16:08:57
    UTC (rev 950)
    +++ trunk/contrib/django/freppledb/static/frepple.js         2009-04-30 15:25:19
    UTC (rev 951)
    @@ -586,8 +586,9 @@
    // Resize the available size for the table.
    syncResize();

    -  // Watch all changes in window size
    -  Event.observe(window, ‘resize’, syncResize);
    +  // Watch all changes in window size (except in broken IE6)
    +  if (navigator.userAgent.toUpperCase().indexOf(‘MSIE 6′) == -1)
    +    Event.observe(window, ‘resize’, syncResize);
    }

    frePPLe 0.6.1 在 IE 6 的 Operation Report 死當

    星期三, 四月 29th, 2009

    最近在公司有一個project就是要幫忙處理生產排程的程式,看到有一個免費的排程程式frepple,就下載來用,後來發現重點的生產排程報表不能產生,死當,就寫信給作者,作者給我的回覆是

    『Try installing a better browser
    frePPLe is tested to work fine with the following browsers: Firefox, Internet Explorer 7, Safari, Opera.

    Internet Explorer 6 is not complying to the industry standards in many ways, which creates problems for frePPLe (and a lot of web developers as well).
    I am not planning to hack up my application to work with such a bad browser.』

    果真在FireFox上執行是ok的,所以我只好請Johan給我一個建議看看如何在IE6上執行,

    >>Ok.I understand your meaning.But in my company I only use Internet Explorer 6.
    >>So I need to hack your application.

    If you send me a patch, I am willing to merge it in the code and support it as part of frePPLe.

    >>I think it may be javascript’s problem.
    >>So could you cue me how I can do?

    It is very likely a javascript problem indeed, but I have not investigated the problem in detail. It is possible that the problem is relatively minor and can fixed pretty easily.

    FrePPLe uses javascript code (among others) to synchronize the scrolling in different DIVs. I suspect the problem is in that part. See the functions syncInitialize, syncScroll, and syncResize in the file frepple.js.

    Note also that frePPLe is using the “prototype” javascript library (see http://www.prototypejs.org/) to support multiple browser dialects easily.

    Good luck & keep me posted,

    經過兩天的測試終於在Google中發現這個在IE 6 onresize的bug,我想在IE6不太會resize window所以我就把

    Event.observe(window, ‘resize’, syncResize);

    這一行給遮蔽了,

    改後的檔案:

    frepple

    Ajax Debug 工具

    星期五, 十月 17th, 2008

    看起來Firebug的除錯功能很有名,這幾天常常看到,我甚至也下載了這個外掛,他的畫面長這樣:

    後來一直納悶為何IE沒有,網頁設計?愛上jQuery確提到了IE也有IE Developer Toolsbar可以用喔!網址在http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&displaylang=en

    可是它的地方跟課本的不一樣?

    執行的畫面長這樣:

    疑,怎跟Firefox的這麼像?而且只有英文的?看來Firefox還是比較厲害點,因為有中文的,哈哈!

    jquery change()

    星期一, 十月 13th, 2008

    這陣子在看網頁設計?愛上jQuery這本書,書中的內容對我來說不會很難,但是當我看到8-4 change()這一節時,使用的js檔範例:

    $(document).ready(function(){
    $(‘:input’).bind(『change』,function(){
    $(‘#dis’).text($(this).attr(‘name’)+’='+$(this).val());
    });
    });

    html檔範例:

    <!DOCTYPE html PUBLIC 『-//W3C//DTD XHTML 1.0 Strict//EN』 『http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd』>
    <head>
    <meta http-equiv=』Content-Language』 content=』zh-tw』>
    <meta http-equiv=』Content-Type』 content=』text/html; charset=big5″>
    <title>My Jquery Test Page</title>
    <script type=』text/javascript』 src=』../jquery-1.2.1.pack.js』></script>
    <script type=』text/javascript』 src=』myfirst70.js』></script>
    <style>
    html
    {
    background-color:green;
    color:white;
    width:400px;
    font:90% Verdana;

    }
    </style>
    </head>
    <body>
    姓名:<input type=text name=name size=20><br>
    暱稱:<input type=text name=nick size=20><br>
    <span id=dis></span>
    </body>
    </html>

    作者這樣說明,change() change(fn) 當符合定義的物件,失去focus並且其值已改變時觸發的事件。

    範例說明是輸入姓名 王大銘後,移到下一格

    不輸入暱稱,直接離開欄位,結果與上圖一樣,並沒有觸動任何的事件,因為暱稱欄位的值並沒有改變,還是空白。

    我覺得這個說明是沒錯,但是change()的重要精髓,應該是要講輸入暱稱然後離開欄位,就可以發現觸動改變的狀況及現象的說明吧,如果講姓名欄位,因為這個欄位又沒有加上要change()的改變,不管你有輸或沒輸,根本沒有觸動的功能發生,不知作者為何還要這麼講?

    但是如果改口講到暱稱的欄位,因為有觸動的功能,所以就可以看到改變,不知讀者是否看出這裡的差異?

    Ajax: Web應用程式的新方法

    星期四, 十月 2nd, 2008

    ㄚ琪在看Ajax: A New Approach to Web Applications時,發現到AJAX,未來的網頁設計有這樣的一段翻譯:『

    AJAX 概念
    AJAX 概念由 Jesse James Garrett 於 2005 年 2 月首先提出‧他對 AJAX 的定義如下,認為 AJAX 不是單一技術,而是多項科技的合成,它們各自發揚,團結成一個有力的個體:

    • 用 XHTML 加上 CSS 來呈現各式各樣的網頁。
    • 用 DOM (Document Object Model) 及 Javascript 展示動態內容及互動。
    • 用 XML 及 XSLT 來作資料互交換及操控 (移動、安排、操作及控制)‧
    • 用 XMLHttpRequest 物件非同步擷取遠端 web server 的資料。
    • 用 JavaScript 結合每一件事情‧

    傳統上網頁程式會如此作用
    網頁裡的超本文連結 (hypertext),一般上會啟動 http request 回網頁伺服器 (web server)‧網頁伺服器會進行處理 – 擷取資料、計算數目字、與系統內的各種程式交流 – 然後回應一篇新的網頁‧這種方式當然是技術本位,但是用戶能參與的部份很少‧當伺服器在運作時,用戶在做什麼?當然只是等待而已‧每敲一次連結或「鍵」, 用戶都只能等待伺服器送回一篇新網頁‧圖中的 user interface 指含有連結或表格的網頁,datastores 指 dtabases‧

    AJAX 不一樣
    AJAX 程式用導入「AJAX Engine」作為仲介 (中間體) 的方式,免除網頁 start-stop-start-stop 的傳統戶互動方式,看起來好像多了一層中介者會讓反應時間更長,但事實上的結果剛好相反;只下載必要的資料,使頻寬需求較小或反應速度加快‧

    網頁開始第一次下載時,瀏覽器首先載入用 javascript 寫成,隱藏起來的「AJAX Engine」‧這個引擎 (Engine) 然後載入 XHTML + CSS 使呈現網頁,並基於用戶行為在背後與網頁伺服器再次溝通‧AJAX Engine 可以在同一時段,讓閱聽者照常瀏覽網頁,同時與網頁伺服器進行 「請求與回應」的溝通 — 此稱為「非同步資料傳輸」(Asynchronous Data Transfer)‧