-
每次都記不太住Javascript RegExp要怎麼做複雜的Replace(例如: 將比對相符的字串內容變成新置換文字的一部分,標題說的"將<x>換成<span class='x'>"就是典型案例),特別記錄一下供未來年老回憶之用。 我遇到的實際需求是想將Sharepoint查詢結果中的高亮註記<c1>, <c2>分別轉成<span class='hlc1">, <span class...
-
有個網頁在某欄位的change事件掛了一段邏輯,依輸入內容連動其他欄位值。使用者抱怨上個月第一次使用完全正常,這個月再用時,在該欄位中輸入資料,其他欄位卻未跟著連動... 我用自己的Client連到同一網頁,跟User輸入同樣的值,一切正常。移駕到使用者座位,使用"肇事"機器實地操作,連動功能也完全正常! 莫非,這程式會認主人,只要遇到拎杯親自操作就不敢造次? 世界上有很多無法解釋的玄妙事件,但本案例並不包含在內。依茶包射手實戰手冊第748頁的記載,此種靈異現象 通常是User與Developer在操作上有細微差異才造成不同結果...
-
為了歡度jQuery四歲生日(jQuery由John Resig 於 2006/01/14 在 BarCamp NYC 首次發表 [註] ),jQuery開發團隊在2010/01/14釋出了 jQuery 1.4版 。 簡單整理一下我所理解的1.4改版重點: 大量重構常用的函數,降低程式複雜度(主要是減少內部函數彼此呼叫的次數),達到改善效能的目標。 * .css(), .attr(), .val(), .html(), .text(), .append(), .prepend(), .before...
-
手上有個需求,要掌握網頁裡所有連結被點擊的狀況。 對jQuery來說這是小菜一碟,利用$("a").live("click", function() { ... });就可在使用者點擊連結時加入自訂邏輯。不過,有挑戰性的部分在於網頁中可能穿插IFrame內嵌其他網頁,原本這個手腳只想動在MasterPage,就打算一口氣將網站所有網頁一網打盡,但$("a")的範圍只限於jQuery所在的window物件範圍,如果連內嵌網頁都要涵蓋,感覺上得在內嵌網頁裡也加上jQuery...
-
專案裡有個網頁列印的需求,在一份清單中,每個項目以Table方式呈現,而列印時不希望項目Table跨頁。以下是我搞出來的解決方案: < style type ="text/css" > .cPrintOnly { page-break-before: always; display: none; } </ style > < script type ="text/javascript" > $( function () 讀取更多...
-
稍早發表利用JScript eval()函數提供 高彈性的自訂條件運算式 一文,隨即獲得網友ChrisTorng迴響,提出了關於eval運算式中可能被放入大量迴圈邏輯的問題以及Build JScript.NET DLL滅少CodeDom及Reflection使用的建議。(感謝!!) 關於第一點,的確,只要在執行階段允許外界輸入程式碼執行就要承擔風險!! 即便依照MSDN的說法,eval預設只能在被限制的環境中執行,被禁止接觸檔案、網路等本機資源,已大幅減少被誤用於入侵系統的可能性。但既然開放讓別人自由寫Code...
-
最近在嘗試將一個功能強大的jQuery Plugin【 jqGrid 】整到專案裡,它的功能與彈性讓人印象深刻(不過要上手得花點時間摸索),大家可以直接看 線上展示 ,應該就能感受其威力。 jqGrid有個貼心的設計--將功能模組化。各模組的程式分散在多個js檔,有用到才需要載入,避免Client端載入肥大js只使用其中一丁點功能,白白浪費載入時間及頻寬。(剛好前些時候James Padolsey也提到 這點 ,甚至覺得殺雞不必用牛刀,小功能或許自己寫會更有效率兼便練功) jqGrid提供了兩種做法...
-
在 James Padolsey 的Blog看到 這個 , Nicholad Zakas ,Yahoo首頁的主要前端工程師、YUI作者之一、也是多本Javascript書籍的作者,前些時候在Google演講: "Speed Up Your JavaScript"(YouTube上有 全程錄影 ) 身為Yahoo網站前端程式的苦主,Zakas的經驗分享肯定不是嘴砲,絕對是拳拳到肉的紮實功夫。James整理的五則筆記挺扼要的: 為Global Object建立Local Variable分身...
-
在上一篇 強化程式範例複製功能 裡,其實迴避了一個問題: 使用者真正想要的操作是點一下就搞定呀! "點一下->Ctrl-A->Ctrl-C"的操作步驟肯定會被嫌棄。不過,據我先前的了解,存取剪貼簿的Javascript存在跨瀏覽器的問題,除了IE內建支援外,其他瀏覽器等靠另嵌Flash物件達成,以前找到的解決方案在Flash Player 10 改變剪貼篿存取政策 後就 壞了 ,我也一直發懶沒去找替代方案。無法解決IE以外瀏覽器的複製功能,獨厚IE必會引發民怨,為了公平起見...
-
前陣子我分享了關於 JS效能調校的經驗 ,IE8 Dev Tool是個很方便的工具。不過,不是每種瀏覽器上都有Profiler可用,若想在不同瀏覽器上都能精確地量測某段操作的時間長短,寫一個Javascript版的 Stopwatch 計時碼錶應是最直接有效的方法。所以我寫了一個JS計時碼錶---darkStopWatch: //Declare a stopWatch "class" function darkStopWatch(timerName) { this .timerName...
-
網頁在FF下不正常,搞了半天才發現問題出在我使用val()指定Textarea的內容,畫面顯示看來一切OK,但經過clone()後,內容值卻消失了。 我整理出以下的範例做測試: (可用 Mini jQuery Lab 直接執行) $( "<div id='x1'><textarea id='t1'></textarea>" + "<textarea id='t2'><...
-
把一筆錢依特定的比例分給幾個人是我工作上常要處理的需求。由於金額必須四捨五入到元或分,因此常需面對除不盡的錢要設法攤掉的問題。例如100元平分給三個人,每人33元後,最後的1元要發給三人之一的幸運兒,變成一人34, 兩人33的分配結果。 以前年紀小不懂事,很直覺的想法是先用100*1/3四捨五入得到33把錢分一分,之後再跑一個迴圈(沒辦法,總不能打電話請這三個人過來猜拳吧?)把分剩的錢(總金額大、人數多時餘下數十上百元也是有可能滴)每次一元地發下去,直到發光為止。 說實在說,當初並不覺得這個寫法有什麼不對...
-
對我來說,IE8最讓人興奮的新功能非"IE8 Developer Tools"莫屬!! (沒騙你們,我有文章為憑: 1 2 3 ) 上市後,IE8立即取代Firefox成為我開發網頁時的主力測試工具,也開始體驗它的強大威力。 像是可任意下指令的Console視窗我就超愛,把整個網頁玩弄於股掌之間的感覺真好~~ 就拿新聞網站為例,先用 上次提過的技巧 載入jquery-1.3.2.js,用HTML Tab的工具觀察DOM結構,然後可以在Script Tab的Conosle區一行一行下指令...
-
網友DD04問到 $.ajaxSetup({ cache: false })的用途 ,我寫了一個小範例說明: <%@ Page Language="C#" %> < script runat ="server" > protected void Page_Load( object sender, EventArgs e) { if (Request[ "m" ] == "t" ) { Response...
-
我寫了一小段程式讓一群Checkbox具有單選的限制。理論上,單選改用Radio就好了,但在我接觸的一些需求中,使用者就是偏好方格打勾的呈現方式,比較貼近傳統紙張表單設計。 程式碼挺簡單的,利用class將幾個Checkbox歸成同一群,當其中任何一個被點選時,就將整群的Checkbox先全設為未勾選,只保留被點選者。 for (var i = 1; i <= 3; i++) $( "body" ).append( "<input type='checkbox'...