2011-12-05 57 views
37

突兀與不顯眼的javascript之間的區別 - 用純英文顯示。簡潔感謝。簡短的例子也表示讚賞。突兀與不顯眼之間的區別javascript

+0

可能的重複[爲什麼在HTML中使用onClick()不好的做法?](http://stackoverflow.com/questions/5871640/why-is-using-onclick-in-html-a-bad-practice ) –

+0

One(「obtrusive」)是一種將元素應用於行爲的舊式(DOM 0)。另一個(「不顯眼」)是由John Resig(jQuery的名氣)推動的一種風格。這兩個都是可以接受的 – 2011-12-05 22:00:14

回答

32

分離問題。您的HTML和CSS沒有綁定到您的JS代碼中。您的JS代碼不內聯到某個HTML元素。你的代碼沒有一個大功能(或者無功能)。你有簡短的簡潔功能。

模塊化。 這種情況發生在您正確分離問題時。例如,您的真棒畫布動畫不需要知道向量如何工作以繪製一個框。

不要殺人如果他們沒有安裝JavaScript,或者沒有運行最新的瀏覽器 - 盡你所能去優雅地降低體驗。

當你只需要做一些小事情時,不要建立垃圾山。人們無休止地通過重新選擇DOM元素來複雜化他們的代碼,在其中拋出語義HTML並拋出編號的ID,以及由於不瞭解文檔模型或其他技術的某些其他技術而發生的其他奇怪事情 - 因此他們依賴「魔術」抽象層將所有東西放慢到垃圾速度,並引入高山。

+0

「不要製造垃圾山」 - 你能舉一個小例子或者這個示範嗎? – Abdul

+1

是不是要在每個文本字段上分別添加諸如'onkeypress =「someFilter();」',混合到HTML中而不是使用jQuery,並使用多個選擇器並一次完成所有操作? – Abdul

23

的標記沒有JavaScript是不顯眼:

<div id="informationHeader">Information</div> 

突兀:

<div onclick="alert('obstrusive')">Information</div> 
+7

儘管這只是程序員的觀點:你可以把所有東西都放在一個單獨的JS腳本文件中,並且仍然有一個對用戶來說非常難以理解的網站...... – nnnnnn

+0

@nnnnnn StackOverflow是一個面向程序員的網站。 – crmpicco

+0

@crmpicco - 是的,我知道。我的觀點是,「不顯眼的Javascript」的概念更多的是它對用戶的影響,而不是它對程序員的影響。用戶不關心JS是否混合到HTML中,他們只關心該網站是否可以在瀏覽器中使用。 – nnnnnn

8
  1. HTML和JavaScript(定義在外部JavaScript文件在您的JavaScript)
  2. 優雅降級的分離(重要頁面的某些部分仍然可以在禁用JavaScript的情況下使用)。

對於一個冗長的解釋,結賬Wikipedia page關於這個問題。

+0

使用內聯DOM 0處理程序時,頁面仍可以正常降級。 – 2011-12-05 21:57:28

+0

@MattMcDonald:我不是說他們不能?但是,你打破了HTML和JavaScript分離的原則 – Matt

+0

你的答案需要更清晰。 – 2011-12-05 21:59:39

2

要擴大Mike的答案:使用UJS行爲將在「稍後」添加。

<div id="info">Information</div> 

... etc ... 

// In an included JS file etc, jQueryish. 
$(function() { 
    $("#info").click(function() { alert("unobtrusive!"); } 
}); 

UJS可能也意味着溫和下降(我喜歡的那種),例如,另一種方式來獲得的#info點擊功能,或許通過提供等效的鏈接。換句話說,如果沒有JavaScript,或者我正在使用屏幕閱讀器等,會發生什麼情況。

+1

我認爲jQuery會對JavaScript產生影響。我寧願只在靜態HTML中看到那些事件,因爲它們將在動態生成的DOM中出現。 – austincheney

+0

@austincheney這與jQuery沒有任何關係; UJS是框架中立的。 –

0

不顯眼 - 「不顯眼,不顯眼,不自信或沉默寡言。」 「具有或表現出強加於人的傾向,如將自己或他人的意見強加給他人。」「

管閒事 - ‘推力(某事)前或後的人,尤其是沒有正當理由或邀請’

所以,實行一個人的意見,在我看來,發言不顯眼的JavaScript的最重要的部分是那從用戶的角度來看它並不妨礙,也就是說,如果JavaScript被瀏覽器設置關閉,網站仍然可以工作。打開或不打開JavaScript,網站仍然可以被用戶訪問屏幕閱讀器,鍵盤和鼠標,以及其他輔助功能工具,可能(可能)該網站對這些用戶來說不會那麼「華麗」,但它仍然可以工作

如果您認爲在「漸進式增強」的術語中,您的網站的核心功能將適用於每個人,無論他們如何訪問它。然後,對於啓用了JavaScript和CSS的用戶(大多數用戶),您可以使用更多交互元素來增強它。另一個關鍵的「不顯眼」因素是「關注點分離」 - 程序員關心的事情,而不是用戶,但它可以幫助阻止事情的JavaScript方面阻礙用戶的體驗。從程序員的角度來看,避免內聯腳本傾向於使標記更漂亮,更容易維護。調試不是分散在一堆內聯事件處理程序中的腳本通常要容易得多。