|
|
|
|
|
本文介紹如何使用Javascript檢測瀏覽器字體大小變化。
檢測瀏覽器字體大小變化的用處
為什么要檢測瀏覽器字體大小變化?可能的選項包括:
如何檢測字體大小變化
檢測字體大小的變化非常容易,你只需要用到一個JavaScript腳本文件:textresizedetector.js,然后添加幾行代碼即可:
span
,span
元素的高度是否發(fā)生變化——這意味著用戶已經(jīng)調(diào)整了字體大小。本質(zhì)上,使用自定義事件意味著每次字體大小發(fā)生變化時你都會收到通知。
下面演示實際效果。(調(diào)整瀏覽器中的字體大小以獲取通知。)
使用文本調(diào)整大小檢測器
要實施此腳本,請先將其嵌入到你的head
文檔中。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Font Resizer Demo</title>
<script type="text/javascript" src="textresizedetector.js"></script>
</head>
<body>
<h1>Resize me, now!</h1>
</body>
</html>
接下來,定義兩個屬性:
span
的id。它們分別存儲在TARGET_ELEMENT_ID
和USER_INIT_FUNC
的兩個參數(shù)中。
<script type="text/javascript" src="textresizedetector.js"></script>
<script type="text/javascript">
// <![CDATA[
/* 要檢查并插入測試SPAN的元素id */
TextResizeDetector.TARGET_ELEMENT_ID = 'header';
/* 初始化TextResizeDetector后調(diào)用的函數(shù) */
TextResizeDetector.USER_INIT_FUNC = init;
// ]]>
</script>
注意:要確定文檔正確的基本字體,你存儲在TARGET_ELEMENT_ID
的元素id,在源順序中應(yīng)該相當(dāng)高,并且不從任何其他元素繼承字體大小。這也意味著檢測器會盡快運行。
最后,定義你在USER_INIT_FUNC
屬性中設(shè)置的功能。
<script type="text/javascript" src="textresizedetector.js"></script>
<script type="text/javascript">
function init(){
var iBase = TextResizeDetector.addEventListener( onFontResize,null );
alert( "The base font size = " + iBase );
}
// 檢查和插入控件的元素id
TextResizeDetector.TARGET_ELEMENT_ID = 'header';
/* 初始化調(diào)用 TextResizeDetector 的函數(shù) */
TextResizeDetector.USER_INIT_FUNC = init;
</script>
init()
函數(shù)是你使用addEventListener
注冊偵聽器的地方,這可確保你的函數(shù)(在本例中是onFontResize()
)在更改字體大小時被調(diào)用,它還返回基本字體大小,這對Opera和Firefox用戶非常有用。
OPERA和Firefox
這些瀏覽器采用不同的方法來調(diào)整大?。核鼈儾皇窃黾幼煮w大小,而是縮放整個文檔,包括表單元素和圖像。由于這些瀏覽器不會調(diào)整字體大小,因此該事件永遠不會觸發(fā)。但是,該腳本允許你最初讀出基本字體大小并幫助你根據(jù)該基本大小調(diào)整布局。
回到工作
一旦你設(shè)置好了所有的東西,你就可以定義你的監(jiān)聽器函數(shù)了。
<script type="text/javascript" src="textresizedetector.js"></script>
<script type="text/javascript">
function init(){
var iBase = TextResizeDetector.addEventListener( »
onFontResize,null );
alert( "The base font size = " + iBase );
}
function onFontResize( e, args ){
var msg = "\nThe base font size in pixels: " + »
args[0].iBase;
msg +="\nThe current font size in pixels: " + »
args[0].iSize;
msg += "\nThe change in pixels from the last »
size:" + args[0].iDelta;
alert( msg );
}
// 檢查和插入控件的元素id
TextResizeDetector.TARGET_ELEMENT_ID = 'header';
// 初始化調(diào)用 TextResizeDetector 的函數(shù)
TextResizeDetector.USER_INIT_FUNC = init;
</script>
當(dāng)事件觸發(fā)時,函數(shù)檢索兩個參數(shù):textSizeChanged
事件的名稱和一個參數(shù)數(shù)組,第一個參數(shù)是具有以下屬性的對象:
iBase
文檔加載時的初始值。
iDelta
上一個字體大小和新字體大小之間的差異。
iSize
新的字體大小。
所有字體大小均以像素為單位。
TextResizeDetector
對象本身具有三個方法:
addEventListener()
注冊你的事件處理程序并返回基本字體大小。如果將對象作為第二個參數(shù)傳遞,則處理函數(shù)將在該對象的范圍內(nèi)執(zhí)行。
stopDetector()
停止檢測器。
startDetector()
啟動檢測器。stopDetector()
僅當(dāng)該方法已事先執(zhí)行時才需要。
總結(jié)
本文介紹了如何使用Javascript檢測瀏覽器字體大小變化,代碼很簡單,只需使用一個JavaScript腳本文件,添加幾行代碼即可。
相關(guān)文章