2009-03-03 77 views
7

我正在做一個JavaScript記憶遊戲,需要顯示日文字符。是否有跨瀏覽器的方式來檢測對亞洲語言的支持,還是專門針對日語?是否可以檢測到東亞語言支持?

window.navigator.language將設置爲瀏覽器的語言,但會漏掉沒有將日語設置爲瀏覽器語言(?)的用戶。

回答

6

是否有跨瀏覽器檢測亞洲語言支持的方式?

你只是指「有沒有安裝日文字體」?因爲現代操作系統可以配置的「支持亞洲語言」的唯一方面就是知道像Shift-JIS這樣的字符編碼是否已知(Windows上的代碼頁932)。但是,你通常不需要這樣做,因爲你可以使用UTF-8,它比任何地方都更清潔和支持。

一般而言,您無法直接判斷特定字符範圍的字體是否已安裝,但存在迂迴的方式。像例如測量對網頁的文本的渲染尺寸:

var half= document.createElement('span'); 
var full= document.createElement('span'); 
half.appendChild(document.createTextNode('\uFF71')); 
full.appendChild(document.createTextNode('\u30A2')); 
document.body.insertBefore(half, document.body.firstChild); 
document.body.insertBefore(full, document.body.firstChild); 
var havejapanesefont= half.offsetWidth!=full.offsetWidth; 
document.body.removeChild(half); 
document.body.removeChild(full); 

這暫時創建包含半寬和片假名「A」的全角變元件。如果日文字體可用,我們會期望它們具有不同的寬度。如果不存在這樣的字體,它們很可能會呈現爲具有相同寬度的相似的「不可修改字符」字形。

+0

非常聰明的黑客! – 2009-03-03 11:53:56

2

您的服務器可能能夠檢查Accept-Charset標題(如果它不包含日語字符),那麼它將重定向到警告頁面。不幸的是,正如this thread所示,這些標題對JavaScript不可用。