国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【譯】表單數(shù)據(jù)校驗(yàn)

fasss / 1131人閱讀

摘要:本文介紹的,就是如何在表單所在頁面對(duì)表單數(shù)據(jù)進(jìn)行校驗(yàn)。輸入框的值若大于指定的值,就會(huì)校驗(yàn)不通過。對(duì)于數(shù)字輸入框,和特性也提供了校驗(yàn)約束。表單的校驗(yàn)更多是個(gè)用戶界面的問題而非真正的數(shù)據(jù)校驗(yàn)。

系列文章說明

原文

當(dāng)你需要經(jīng)常在服務(wù)器上校驗(yàn)數(shù)據(jù)時(shí),在Web頁面上的另加校驗(yàn)就有諸多好處。多數(shù)情況下,用戶會(huì)被表單惹惱。而當(dāng)用戶填完表單時(shí)就校驗(yàn)數(shù)據(jù),既有助于用戶立即發(fā)現(xiàn)他們犯的錯(cuò)誤,也能減少等待HTTP響應(yīng)的時(shí)間、并減少服務(wù)器對(duì)錯(cuò)誤表單輸入的處理。本文介紹的,就是如何在表單所在頁面對(duì)表單數(shù)據(jù)進(jìn)行校驗(yàn)。

使用瀏覽器內(nèi)置的表單校驗(yàn)

HTML5的一大特性,就是在不依賴腳本的情況下校驗(yàn)大多數(shù)的用戶數(shù)據(jù)。該特性是通過使用表單元素上的校驗(yàn)特性來實(shí)現(xiàn)的。

元素校驗(yàn)不通過時(shí)

當(dāng)一個(gè)元素校驗(yàn)不通過時(shí),會(huì)發(fā)生兩件事:

該元素會(huì)匹配到:invalid這個(gè)CSS偽類,它能讓你給校驗(yàn)不過的元素提供特定的樣式。類似地,校驗(yàn)通過的元素則會(huì)匹配:valid偽類。

當(dāng)用戶要發(fā)送數(shù)據(jù)時(shí),瀏覽器會(huì)阻止這個(gè)表單、并展示一段錯(cuò)誤信息。

元素的校驗(yàn)約束

所有的元素都能使用pattern特性來作校驗(yàn)。該特性采用一個(gè)區(qū)分大小寫的正則表達(dá)式作為它的值。若元素的值非空、或者不匹配該特性所指定的正則表達(dá)式,該元素就會(huì)被認(rèn)為是校驗(yàn)不通過的。

舉個(gè)例子
input:invalid {
  border: 1px solid red;
}

input:valid {
  border: 1px solid green;
}

演示

在本例中,元素可以接受如下三種值:空字符串、字符串"banana"或"cherry"。

required特性

若某個(gè)元素需要在提交表單之前填一個(gè)值,那我們可以通過required特性來標(biāo)記該元素。當(dāng)該特性為true時(shí),所在的文本域不允許為空。

input:invalid {
  border: 1px solid red;
}

input:valid {
  border: 1px solid green;
}

注意文本框相比上個(gè)例子有何不同:

演示

注意:元素的type特性被設(shè)為emailurl時(shí),無需再使用pattern特性來坐校驗(yàn)。指定email類型時(shí),文本框的值就得是個(gè)正確格式的email地址(同時(shí)指定mutiple特性時(shí),還可以是一個(gè)逗號(hào)分隔的email地址列表)。指定url類型的文本框則會(huì)自動(dòng)匹配一個(gè)URL。

其他校驗(yàn)約束

所有接受用戶輸入的表單元素(

body {
  font: 1em sans-serif;
  padding: 0;
  margin : 0;
}

form {
  max-width: 200px;
  margin: 0;
  padding: 0 5px;
}

p > label {
  display: block;
}

input[type=text],
input[type=email],
input[type=number],
textarea,
fieldset {
/* 需要給Webkit瀏覽器下的表單元素適當(dāng)?shù)臉邮?*/
  -webkit-appearance: none;
  
  width : 100%;
  border: 1px solid #333;
  margin: 0;
  
  font-family: inherit;
  font-size: 90%;
  
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

input:invalid {
  box-shadow: 0 0 5px 1px red;
}

input:focus:invalid {
  outline: none;
}

演示

定制錯(cuò)誤信息

如我們上面看到的幾個(gè)例子所示,每次用戶要發(fā)送未通過校驗(yàn)的表單時(shí),瀏覽器都會(huì)展示一段錯(cuò)誤信息。該信息的展示方式取決于瀏覽器本身。

這些自動(dòng)生成的信息有兩大缺點(diǎn):

沒有標(biāo)準(zhǔn)的方法來用CSS改變其外觀和體驗(yàn)。

它們還要依賴瀏覽器本地信息,這意味著你會(huì)在使用一種語言的頁面中,遇到錯(cuò)誤信息使用另一種語言展示的情況。

使用法語版本的瀏覽器瀏覽英文頁面

瀏覽器 渲染效果
Firefox 17 (Windows 7)
Chrome 22 (Windows 7)
Opera 12.10 (Mac OSX)

要定制這些信息的外觀和文本,你必須使用JavaScript,沒有只使用HTML和CSS的方法。

HTML5提供了約束驗(yàn)證API來檢查和定制表單元素的狀態(tài)。此外它也能改變錯(cuò)誤信息的文本。來看個(gè)例子:

在Javascript中,你可以調(diào)用setCustomValidity())方法:

var email = document.getElementById("mail");

email.addEventListener("keyup", function (event) {
  if (email.validity.typeMismatch) {
    email.setCustomValidity("I expect an e-mail, darling!");
  } else {
    email.setCustomValidity("");
  }
});

演示

使用Javascript校驗(yàn)表單

若你想要控制錯(cuò)誤信息的樣式和效果,或者想處理那些不支持HTML5表單驗(yàn)證的瀏覽器,那你就只能使用Javascript了。

HTML5約束驗(yàn)證API

現(xiàn)在越來越多的瀏覽器開始支持約束驗(yàn)證API,而且也支持得越來越靠譜。該API囊括了各個(gè)表單元素上的一系列方法和屬性。

約束驗(yàn)證API的屬性
屬性 描述
validationMessage 可以是一段本地化的信息,用于描述表單控件所不滿足的驗(yàn)證條件(如果有的話);當(dāng)控件不支持任何約束驗(yàn)證(willValidae的值為false)、或控件的值滿足了約束條件時(shí),也可以是一個(gè)空字符串
validity 一個(gè)用于描述元素校驗(yàn)階段的validityState對(duì)象
validity.customError 元素觸發(fā)了定制的錯(cuò)誤時(shí)返回true,否則返回false
validity.patternMismatch 元素的值不匹配提供的模板時(shí)返回true,否則返回false。當(dāng)返回true時(shí),該元素會(huì)匹配CSS的:invalid偽類
validity.rangeOverflow 元素的值大于提供的最大值時(shí)返回true,否則返回false。當(dāng)返回true時(shí),該元素會(huì)匹配CSS的:invalid和:out-fo-range偽類
validity.rangeUnderflow 元素的值小于提供的最小值時(shí)返回true,否則返回false。當(dāng)返回true時(shí),該元素會(huì)匹配CSS的:invalid和:out-fo-range偽類
validity.stepMismatch 元素的值不符合step特性提供的規(guī)則時(shí)返回true,否則返回false。當(dāng)返回true時(shí),該元素會(huì)匹配CSS的:invalid和:out-fo-range偽類
validity.tooLong 元素的值的長(zhǎng)度超過要求的最大長(zhǎng)度時(shí)返回true,否則返回false。當(dāng)返回true時(shí),該元素會(huì)匹配CSS的:invalid和:out-fo-range偽類
validity.typeMismatch 元素的值不是正確的語法時(shí)返回true,否則返回false。當(dāng)返回true時(shí),該元素會(huì)匹配CSS的:invalid偽類
validity.valid 元素的值沒有校驗(yàn)出的問題時(shí)返回true,否則返回false。當(dāng)返回true時(shí),該元素會(huì)匹配CSS的:valid,否則會(huì)匹配:invalid偽類
validity.valueMissing 元素是必填項(xiàng)但沒有值時(shí)返回true,否則返回false。當(dāng)返回true時(shí),該元素會(huì)匹配CSS的:invalid偽類
willValidate 元素在表單提交時(shí)會(huì)被校驗(yàn)則返回true,否則返回false
約束驗(yàn)證API的方法
方法 描述
checkValidity() 元素的值沒有校驗(yàn)出的問題時(shí)返回true,否則返回false。當(dāng)校驗(yàn)不通過時(shí),該方法還會(huì)在相應(yīng)元素上觸發(fā)invalid事件。
setCustomValidity(message) 給元素添加一段定制的錯(cuò)誤信息;若你手動(dòng)設(shè)置了錯(cuò)誤信息,則給元素會(huì)被當(dāng)做校驗(yàn)未通過,并顯示出特定的錯(cuò)誤。這就能讓你擺脫標(biāo)準(zhǔn)的約束驗(yàn)證API提供的錯(cuò)誤信息,直接使用Javascript來建立自己的錯(cuò)誤信息。該信息在報(bào)錯(cuò)時(shí)會(huì)展示給用戶。

對(duì)于老舊瀏覽器,我們可以使用H5F之類的polyfill來彌補(bǔ)其對(duì)于約束驗(yàn)證API的不支持。由于這里你已經(jīng)使用了Javascript,所以使用polyfill也并不會(huì)成為你設(shè)計(jì)或?qū)崿F(xiàn)網(wǎng)站、Web應(yīng)用時(shí)的額外負(fù)擔(dān)。

使用約束驗(yàn)證API的例子

來看下如何使用該API來建立定制的錯(cuò)誤信息,首先HTLM如下:

這個(gè)簡(jiǎn)單的表格用了novalidate特性來關(guān)閉瀏覽器的自動(dòng)校驗(yàn);這樣我們的腳本就能控制整個(gè)校驗(yàn)過程了。但是這樣做卻不會(huì)禁用掉約束驗(yàn)證API、以及 :valid, :invalid, :in-range, :out-of-range 等一系列CSS偽類。這就意味著,雖然瀏覽器不會(huì)自動(dòng)在表單發(fā)送前校驗(yàn)它的數(shù)據(jù),但你仍可自己來做校驗(yàn)、并且按需給予表單樣式。

aria-live特性用來確保我們定制的錯(cuò)誤信息能展示給任何人,包括那些使用諸如屏幕閱讀器等無障礙設(shè)備的人。

CSS
這段CSS用于裝飾我們的表單、并讓錯(cuò)誤的輸出看起來更吸引人些。

/* 這段只是用來美化表單 */
body {
  font: 1em sans-serif;
  padding: 0;
  margin : 0;
}

form {
  max-width: 200px;
}

p * {
  display: block;
}

input[type=email]{
  -webkit-appearance: none;

  width: 100%;
  border: 1px solid #333;
  margin: 0;

  font-family: inherit;
  font-size: 90%;

  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

/* 這段是給校驗(yàn)未通過的輸入框的樣式 */
input:invalid{
  border-color: #900;
  background-color: #FDD;
}

input:focus:invalid {
  outline: none;
}

/* 這段是給錯(cuò)誤信息的樣式 */
.error {
  width  : 100%;
  padding: 0;
 
  font-size: 80%;
  color: white;
  background-color: #900;
  border-radius: 0 0 5px 5px;
 
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.error.active {
  padding: 0.3em;
}

JavaScript
下面的Javascript代碼用來處理我們自定義的錯(cuò)誤校驗(yàn)。

// 獲取DOM節(jié)點(diǎn)的方法有許多,這里我們獲取了表單自身以及email輸入框,還有一個(gè)讓我們放置錯(cuò)誤信息的span元素。

var form  = document.getElementsByTagName("form")[0];
var email = document.getElementById("mail");
var error = document.querySelector(".error");

email.addEventListener("keyup", function (event) {
  // 每次用戶輸入時(shí),我們都會(huì)檢查email輸入框是否合法
  if (email.validity.valid) {
    // 當(dāng)校驗(yàn)通過時(shí),如果已經(jīng)有一段錯(cuò)誤信息在顯示了,就移除掉錯(cuò)誤信息
    error.innerHTML = ""; // 重置消息內(nèi)容
    error.className = "error"; // 重置消息的顯示狀態(tài)
  }
}, false);
form.addEventListener("submit", function (event) {
  // 每次用戶要提交表單時(shí),我們都會(huì)檢查email輸入框是否合法
  if (!email.validity.valid) {
    // 如果輸入框不合法,我們就展示那段定制的錯(cuò)誤信息
    error.innerHTML = "I expect an e-mail, darling!";
    error.className = "error active";
    // 通過取消事件來阻止表單提交
    event.preventDefault();
  }
}, false);

下面是運(yùn)行結(jié)果:

演示

約束驗(yàn)證API給了我們處理表單校驗(yàn)的強(qiáng)大工具,并讓我們能有力地控制其用戶界面,這就遠(yuǎn)超過只用HTML和CSS所能做的事了。

不使用內(nèi)置API來校驗(yàn)表單

有時(shí),面對(duì)老舊瀏覽器和[定制的組件](),你不能(或者不想)使用約束驗(yàn)證API。但在這種情況下,你仍然可以使用Javascript來校驗(yàn)?zāi)愕谋韱巍1韱蔚男r?yàn)更多是個(gè)用戶界面的問題、而非真正的數(shù)據(jù)校驗(yàn)。

要校驗(yàn)一個(gè)表單,你得先問你自己幾個(gè)問題:

我需要進(jìn)行什么類型的校驗(yàn)?
你得先決定如何校驗(yàn)數(shù)據(jù),這取決于你:可以用字符串操作、類型轉(zhuǎn)換、正則表達(dá)式等等。只要記住表單數(shù)據(jù)通常是一段文本,而且傳到你的腳本里時(shí)也是一些字符串就好。

表單校驗(yàn)未通過時(shí),我應(yīng)該做什么?
這就是個(gè)UI的問題了。得靠你決定表單的行為:是不論是否通過都發(fā)送數(shù)據(jù)呢?還是高亮那些出現(xiàn)錯(cuò)誤的字段?還是展示一些錯(cuò)誤信息?

如何幫助用戶用戶糾正非法數(shù)據(jù)?
要減少用戶的不滿,很重要的是提供盡可能多的幫助信息,以指導(dǎo)用戶糾正他們的輸入。還應(yīng)該提供些前置的輸入建議、和清晰的錯(cuò)誤信息,讓用戶知道該輸入什么。

若你還想深入了解表單校驗(yàn)的UI要求,可以讀讀下面這些有用的文章:

SmashingMagazine: Form-Field Validation: The Errors-Only Approach

SmashingMagazine: Web Form Validation: Best Practices and Tutorials

Six Revision: Best Practices for Hints and Validation in Web Forms

A List Apart: Inline Validation in Web Forms

未使用約束驗(yàn)證API的例子

為了更好地說明,我們接下來要重構(gòu)上述的例子,讓它能在老舊瀏覽器上運(yùn)行:

如你所見,HTML的和之前幾乎一模一樣;這里只移除了HTML5的部分。要注意的是ARIA是個(gè)并不依賴于HTML5的獨(dú)立特性,所以我們?nèi)詴?huì)保留它。

CSS
類似地,CSS不需要做大規(guī)模修改;只要把:invalid偽類轉(zhuǎn)為真的類,并且不去使用IE6不支持的特性選擇器即可。

/* 這段只是用來美化表單 */
body {
  font: 1em sans-serif;
  padding: 0;
  margin : 0;
}

form {
  max-width: 200px;
}

p * {
  display: block;
}

input.mail {
  -webkit-appearance: none;

  width: 100%;
  border: 1px solid #333;
  margin: 0;

  font-family: inherit;
  font-size: 90%;

  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

/* 這段是給校驗(yàn)未通過的輸入框的樣式 */
input.invalid{
  border-color: #900;
  background-color: #FDD;
}

input:focus.invalid {
  outline: none;
}

/* 這段是給錯(cuò)誤信息的樣式 */
.error {
  width  : 100%;
  padding: 0;
 
  font-size: 80%;
  color: white;
  background-color: #900;
  border-radius: 0 0 5px 5px;
 
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.error.active {
  padding: 0.3em;
}

JavaScript
Javascript代碼的改變最大,為了兼容我們需要做更多的事情。

// 老舊瀏覽器上獲取DOM節(jié)點(diǎn)的方法少了些
var form  = document.getElementsByTagName("form")[0];
var email = document.getElementById("mail");

// 下面是個(gè)訪問DOM里下個(gè)兄弟元素節(jié)點(diǎn)的的技巧
// 但這樣做很危險(xiǎn),因?yàn)楹苋菀拙蜁?huì)建立一個(gè)死循環(huán)
// 在現(xiàn)代瀏覽器上,應(yīng)該使用element.nextElementSibling
var error = email;
while ((error = error.nextSibling).nodeType != 1);

// 按照HTML5的規(guī)范來
var emailRegExp = /^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/;

// 許多老舊瀏覽器不支持addEventListener方法
// 下面是個(gè)解決該問題的簡(jiǎn)單方法,當(dāng)然方法遠(yuǎn)不止這一種
function addEvent(element, event, callback) {
  var previousEventCallBack = element["on"+event];
  element["on"+event] = function (e) {
    var output = callback(e);
    
    // 回調(diào)返回`false`時(shí)會(huì)終止回調(diào)鏈并結(jié)束事件回調(diào)的執(zhí)行
    if (output === false) return false;

    if (typeof previousEventCallBack === "function") {
      output = previousEventCallBack(e);
      if(output === false) return false;
    }
  }
};

// 現(xiàn)在可以來重構(gòu)我們的校驗(yàn)了
// 由于我們不依賴CSS偽類,故而必須在email字段明確設(shè)置valid/invalid類
addEvent(window, "load", function () {
  // 這里我們檢驗(yàn)該字段是否為空(注意,該字段不是必填的)
  // 若不是,我們?cè)贆z驗(yàn)它的內(nèi)容是否為正確格式的email地址
  var test = email.value.length === 0 || emailRegExp.test(email.value);
 
  email.className = test ? "valid" : "invalid";
});

// 定義用戶在該字段輸入時(shí)會(huì)發(fā)生什么
addEvent(email, "keyup", function () {
  var test = email.value.length === 0 || emailRegExp.test(email.value);
  if (test) {
    email.className = "valid";
    error.innerHTML = "";
    error.className = "error";
  } else {
    email.className = "invalid";
  }
});

// 定義用戶提交數(shù)據(jù)時(shí)會(huì)發(fā)生什么
addEvent(form, "submit", function () {
  var test = email.value.length === 0 || emailRegExp.test(email.value);
 
  if (!test) {
    email.className = "invalid";
    error.innerHTML = "I expect an e-mail, darling!";
    error.className = "error active";

    // 某些老舊瀏覽器不支持event.preventDefault()方法
    return false;
  } else {
    email.className = "valid";
    error.innerHTML = "";
    error.className = "error";
  }
});

結(jié)果如下所示:

演示

如你所見,自己建立一個(gè)校驗(yàn)系統(tǒng)并不是一件難事。難點(diǎn)就在于如何跨平臺(tái)、并在你創(chuàng)建的任何表單上都能使用它。現(xiàn)在有許多庫能執(zhí)行表單校驗(yàn),你應(yīng)該毫不猶豫地使用他們。如下是幾個(gè)例子:

獨(dú)立的庫

Validatious

Validate.js

jQuery插件

Validation

Valid8

遠(yuǎn)端校驗(yàn)

有些情況下使用遠(yuǎn)端校驗(yàn)還是挺有用的。在用戶輸入的數(shù)據(jù)得添加到應(yīng)用服務(wù)器的數(shù)據(jù)存儲(chǔ)時(shí),這種校驗(yàn)是有必要的。一個(gè)相應(yīng)的例子就是需要填用戶名的注冊(cè)表單。為避免用戶名重復(fù),更聰明的辦法是發(fā)送一個(gè)AJAX請(qǐng)求來檢查用戶名的可用性,而不是讓用戶發(fā)送完數(shù)據(jù)、然后再返回一個(gè)帶有錯(cuò)誤的表單。

使用這種校驗(yàn),需要注意以下幾點(diǎn):

因?yàn)樾枰_暴露API和一些數(shù)據(jù),所以得保證數(shù)據(jù)不是敏感的。

由于網(wǎng)絡(luò)存在延遲,故得進(jìn)行異步校驗(yàn)。這就得靠一些UI設(shè)計(jì)來保證校驗(yàn)不能正確執(zhí)行時(shí),用戶操作不至于被阻塞。

結(jié)論

表單校驗(yàn)并不用靠復(fù)雜的Javascript,但它要求我們認(rèn)真為用戶著想,始終得幫用戶糾正他們輸入的數(shù)據(jù)。要做到這點(diǎn),請(qǐng)確保:

展示明確的錯(cuò)誤信息

約定好輸入格式

指出錯(cuò)誤出現(xiàn)的確切位置(特別是在那些巨大的表單中)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/86755.html

相關(guān)文章

  • 表單數(shù)據(jù)校驗(yàn)

    摘要:本文介紹的,就是如何在表單所在頁面對(duì)表單數(shù)據(jù)進(jìn)行校驗(yàn)。輸入框的值若大于指定的值,就會(huì)校驗(yàn)不通過。對(duì)于數(shù)字輸入框,和特性也提供了校驗(yàn)約束。表單的校驗(yàn)更多是個(gè)用戶界面的問題而非真正的數(shù)據(jù)校驗(yàn)。 系列文章說明 原文 當(dāng)你需要經(jīng)常在服務(wù)器上校驗(yàn)數(shù)據(jù)時(shí),在Web頁面上的另加校驗(yàn)就有諸多好處。多數(shù)情況下,用戶會(huì)被表單惹惱。而當(dāng)用戶填完表單時(shí)就校驗(yàn)數(shù)據(jù),既有助于用戶立即發(fā)現(xiàn)他們犯的錯(cuò)誤,也能減少...

    SexySix 評(píng)論0 收藏0
  • 表單數(shù)據(jù)校驗(yàn)

    摘要:本文介紹的,就是如何在表單所在頁面對(duì)表單數(shù)據(jù)進(jìn)行校驗(yàn)。輸入框的值若大于指定的值,就會(huì)校驗(yàn)不通過。對(duì)于數(shù)字輸入框,和特性也提供了校驗(yàn)約束。表單的校驗(yàn)更多是個(gè)用戶界面的問題而非真正的數(shù)據(jù)校驗(yàn)。 系列文章說明 原文 當(dāng)你需要經(jīng)常在服務(wù)器上校驗(yàn)數(shù)據(jù)時(shí),在Web頁面上的另加校驗(yàn)就有諸多好處。多數(shù)情況下,用戶會(huì)被表單惹惱。而當(dāng)用戶填完表單時(shí)就校驗(yàn)數(shù)據(jù),既有助于用戶立即發(fā)現(xiàn)他們犯的錯(cuò)誤,也能減少...

    kevin 評(píng)論0 收藏0
  • 】HTML表單指南---第一個(gè)HTML表單

    摘要:一個(gè)表單由一或多個(gè)部件組成,這些部件可以是文本框單行或多行選擇框按鈕復(fù)選框或單選按鈕。在我們的示例里,一個(gè)文本框中用了該屬性的默認(rèn)值,該值表示一個(gè)基本的單行文本框,用于接收無控制或驗(yàn)證的任何文本。 前言 這個(gè)系列譯自mdn上的一份表單指南,原文詳盡闡述了表單相關(guān)的基礎(chǔ)知識(shí)。而表單作為一個(gè)經(jīng)典的頁面交互方式,是每個(gè)前端工程師繞不開的話題,通過翻譯這個(gè)系列的文章既是有助于掃清自己的知識(shí)盲區(qū)...

    yearsj 評(píng)論0 收藏0
  • 】遺留瀏覽器中的表單

    摘要:提到老舊瀏覽器,我們腦海中往往復(fù)現(xiàn)的就是舊版的。但幸運(yùn)的是,有一些技巧可以協(xié)助解決由老舊瀏覽器引起的的問題。放棄表單和老舊瀏覽器的最大問題是對(duì)的支持。結(jié)論如你所見,處理老舊瀏覽器所涉及的內(nèi)容不止有表單。 系列文章說明 原文 所有的web開發(fā)者都會(huì)很快(或者很痛苦地)意識(shí)到Web是一個(gè)粗糙的環(huán)境,其中最糟糕的一點(diǎn)就是老舊的瀏覽器。提到老舊瀏覽器,我們腦海中往往復(fù)現(xiàn)的就是舊版的IE。但...

    張憲坤 評(píng)論0 收藏0
  • 】遺留瀏覽器中的表單

    摘要:提到老舊瀏覽器,我們腦海中往往復(fù)現(xiàn)的就是舊版的。但幸運(yùn)的是,有一些技巧可以協(xié)助解決由老舊瀏覽器引起的的問題。放棄表單和老舊瀏覽器的最大問題是對(duì)的支持。結(jié)論如你所見,處理老舊瀏覽器所涉及的內(nèi)容不止有表單。 系列文章說明 原文 所有的web開發(fā)者都會(huì)很快(或者很痛苦地)意識(shí)到Web是一個(gè)粗糙的環(huán)境,其中最糟糕的一點(diǎn)就是老舊的瀏覽器。提到老舊瀏覽器,我們腦海中往往復(fù)現(xiàn)的就是舊版的IE。但...

    Airmusic 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<