項目知識點匯總

來源:互聯網
上載者:User
在做項目的時候,回遇到很多很小的地方,但是解決起來可能會花點很長時間,有的甚至超過了實現一個功能的時間,也許不解決可能用,但是bug就在那裡,不解決,不死心。1、解決Firefox緩衝xml問題   在後台配置頁中,需要讀取伺服器端的xml檔案來實現配置,所以每當移動或修改xml時,需要載入伺服器端的xml,這裡在Firefox、Google等瀏覽器有一個問題,就是每當修改完xml後重新載入的時候,因為此時讀取的是xml的快取檔案,所以無法獲得最新的xml資料,手動清理緩衝之後,變可以重新實現移動和修改。聽起來這是個很簡單的問題,就這麼一個小問題幾乎用了三天時間,其中有兩天是和小崔一起弄的。 首先,在載入網頁加上時間戳記是行不通的,不知道為什麼。 其次,使用網上給出的清理緩衝的方式是行不通的,不知道為什麼。 再次,強制重新整理網頁(ctrl+F5)在Firefox中是行不通的,因為它中彈出提示框。 最後,解決辦法是,在載入xml的地方,在xml檔案名稱後加上時間戳記,其實之前從來都沒有在需要載入的檔案後加過時間戳記,感覺這個問題純屬經驗問題,如果不懂,可能會繞很多彎路,但是如果知道,甚至連半分鐘都不到,輕鬆解決了。   2、各種瀏覽器的相容問題我們知道,不同的瀏覽器對js的解析有些地方時不一樣的,不如在Firefox中就沒有innerText,在IE8中沒有textContent,所以,如果相容不同的瀏覽器,需要對瀏覽器進行判斷,這個問題比較好解決,找到不同的地方,然後進行判斷即可,下面舉個例子。  if (navigator.userAgent.indexOf("MSIE") > 0) {                        //迴圈當前list,如果與當前點擊的li內容相同,則執行點擊當前li,把資訊寫入到彈出框中                        for (var i = 0; i < popDivClick.length; i++) {                            if (popDivClick[i].innerText == elaClass) {                                popDivClick[i].click();                            }                        }                    }                        //如果為Firefox                    else if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) {                        //迴圈當前list,如果與當前點擊的li內容相同,則執行點擊當前li,把資訊寫入到彈出框中                        for (var i = 0; i < popDivClick.length; i++) {                            if (popDivClick[i].textContent == elaClass) {                                popDivClick[i].click();                            }                        }                    }                    else if (navigator.userAgent.indexOf("Chrome") >= 0) {                        //迴圈當前list,如果與當前點擊的li內容相同,則執行點擊當前li,把資訊寫入到彈出框中                        for (var i = 0; i < popDivClick.length; i++) {                            if (popDivClick[i].innerText == elaClass) {                                popDivClick[i].click();                            }                        }                    }                    else if (navigator.userAgent.indexOf("Opera") >=0) {                        //迴圈當前list,如果與當前點擊的li內容相同,則執行點擊當前li,把資訊寫入到彈出框中                        for (var i = 0; i < popDivClick.length; i++) {                            if (popDivClick[i].innerText == elaClass) {                                popDivClick[i].click();                            }                        }                    }   3、給下拉框賦值,在修改的時候,做的是彈出框,有個地方是需要下拉框的,但是下拉框的初始值應該是修改前的值,所以這裡就需要給下拉框賦值,這裡比起給textbox賦值來說,更複雜一些。          //給下拉框賦值            var drop = document.getElementById('dropModify');            var checks = drop.getElementsByTagName("option");            for (var i = 0; i < checks.length; i++) {                if (checks[i].value == ip) {                    drop.selectedIndex = i;                }            }解決單選框和下拉框的思路是一樣的,也是用於修改時初始化選項        //得到所有radio            var vRbtidList = vRbtid.getElementsByTagName("INPUT");            //迴圈tree節點            for (var i = 0; i < childNodes.length; i++) {                //擷取當前選中節點                if (childNodes[i].attributes[0].nodeTypedValue == el.options[el.selectedIndex].text) {                    //當節點為content是選中否,否則選中是                    if (childNodes[i].attributes[2].nodeTypedValue == "content") {                        vRbtidList[1].checked = true;                        return;                    }                    else {                        vRbtidList[0].checked = true;                        return;                    }                }   4、使滑鼠放上去label顯示完整內容  有時候資料很長,比如在表格中,我們如果顯示完整資料的話,表格會變得很醜,所以這裡需要把顯示部分資料,然後滑鼠放上去的時候彈出一個小的彈出框顯示完整資料。 首先,只顯示部分資料的方法  <style type="text/css">                  .mlength        {            display: block;            width: 50px;            overflow: hidden;            white-space: nowrap;                       -o-text-overflow: ellipsis;                        text-overflow: ellipsis;                  }                   </style>顯示彈出框 <asp:Label ID="lblId" runat="server" ToolTip='<%# Eval("cardId") %>' Text='<%# Eval("cardId").ToString()=="0"?Eval("cardId").ToString():Eval("cardId").ToString().Substring(26,6) %>'></asp:Label></td>這裡還有一個知識點,就是因為綁定的卡號一般為32未,在label中要顯示後六位,但是在系統初始中,初始現金支付使用的是卡號0,只有一位,如果直接綁定會報錯,這裡這裡需要判斷該卡號是否未0,未0的話就不截取字串,不為零的話截取,這裡用的是三木運算子。  5、資料庫中的日期時間只顯示日期(綁定表格時使用) <asp:Label ID="Label1" runat="server" Text='<%# Eval("birthday","{0:yyyy-MM-dd}")%>'></asp:Label>其實可以發現,這些問題不解決不會影響到運行,比如,限制客戶只能用IE,或者是介面醜一點也沒有太大關係,不影響功能,但是,當解決之後就會發現,其實它不僅僅是解決一個功能,這些問題,解決了,以後就永遠都解決了,不解決,就永遠都是個問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.