趙勇軍 符紅霞
收稿日期:2014-04-30
基金項目:阿壩師專校級規(guī)劃課題(ABS13-19)。
作者簡介:趙勇軍(1978-),男,四川南充人,碩士,助理研究員,主要研究方向:計算機應(yīng)用技術(shù)、智能信息處理。
摘要:一種滾動內(nèi)容顯示效果在嵌入式頁面中的應(yīng)用非常廣泛。實現(xiàn)滾動顯示的效果有多種方式,其中MARQUEE 標(biāo)簽方式是使用最方便,頁面編碼最快捷的一種。當(dāng)然,頁面制作者的快捷來源于瀏覽器對該標(biāo)簽的全面支持,同時也是區(qū)分嵌入式瀏覽器功能是否完善的重要屬性之一。本文提供了一種如何在嵌入式瀏覽器中簡單實現(xiàn)滾動效果的方法。
關(guān)鍵詞:嵌入式瀏覽器; MARQUEE; 滾動顯示
中圖分類號:TP308文獻標(biāo)識碼:A文章編號:2095-2163(2014)03-0100-03
Study on Implementation of Scrolling Display based on HTML in Embedded Browser
ZHAO Yongjun, FU Hongxia
(Network Management Center, Aba Teachers College, Wenchuan Sichuan623002, China)
Abstract:Scrolling display is extensively used in embedded page. There is a variety of ways to achieve scrolling display, where, MARQUEE tag is the most convenient and most efficient page-coding way. Obviously, this efficiency of page creators is from full support of browser to the tag, which is also one of the important properties to evaluate whether the functions of embedded browser are completed. This essay provides a simple way of how to achieve scrolling display in embedded browser.
Key words:Embedded Browser; MARQUEE; Scrolling Display
0引言
在程序編寫中,滾動內(nèi)容顯示通常指用一個矩形區(qū)域顯示用戶特別關(guān)心的少量信息,這條信息串首尾相連,并且向一個方向循環(huán)滾動。證券業(yè)中常用滾動顯示來呈現(xiàn)不斷變化的股票行情,網(wǎng)頁中常用滾動顯示提供瀏覽者一些重要信息等等。在滾動顯示的多種實現(xiàn)方式中,HTML 語言的MARQUEE 標(biāo)簽以其編碼簡單,使用方便和功能全面成為最受網(wǎng)頁制作者青睞的一種方式,因而也是目前倍受關(guān)注的研究課題。
MARQUEE 標(biāo)簽中,滾動內(nèi)容并不只是局限于文本,圖片、表格,甚至一段HTML 代碼段都可以用來滾動(瀏覽器會將其代碼段解析為用戶可以觀看的內(nèi)容)。而滾動的速度、方向、循環(huán)方向、循環(huán)次數(shù)等等都可以自由設(shè)置[1]。在此,對其具體實現(xiàn)開展分析研究。
1MARQUEE 標(biāo)簽的使用方法
1.1代碼示例
以上代碼可實現(xiàn)“阿壩師范高等專科學(xué)?!睅讉€字在以紅色為背景色的560x30 范圍的矩形區(qū)域內(nèi)自右向左以8檔速度循環(huán)滾動。
1.2標(biāo)簽的屬性
(1)滾動方向(direction) ,包括left/right/up/down。缺省值為left,即自右向左滾動。
(2)滾動速度(scrollamount),實際上是設(shè)定滾動字幕滾動一次的距離,其單位長度由瀏覽器決定。缺省值為6。值越大,速度越快。
(3)滾動方式(bihavior),包括scroll/slide/alternate,分別表示反復(fù)地由一端滾動至另一端;只滾動一次,由一端滾動至另一端;在兩端反復(fù)來回滾動。缺省值為scroll。
(4)滾動循環(huán)次數(shù)(loop),包括infinite/num。infinite 或loop= -1,都表示無限次滾動;num 等于幾,就表示循環(huán)幾次。缺省值為infinite。
(5)動作延時(scrolldelay),設(shè)定兩次滾動之間的延遲時間。缺省值為0,表示每次滾動結(jié)束后立即開始下一次滾動。
(6)滾動區(qū)域背景色(bgcolor) ,設(shè)定滾動區(qū)域的背景顏色。缺省值為透明;滾動區(qū)域高度(height) 設(shè)定滾動區(qū)域的高度;滾動區(qū)域?qū)挾?width) 設(shè)定滾動區(qū)域的寬度;空白( hspace/ vspace) 設(shè)定滾動內(nèi)容左右邊框和上下邊框的寬度[2]。
2MARQUEE 標(biāo)簽的實現(xiàn)方法
2.1整體思路
在圖形引擎中將MARQUEE 處理為窗口控件,在瀏覽器中將其作為一個頁面元素參與排版。將待滾動的內(nèi)容形成一個內(nèi)置子頁面,保存在本地,并呈現(xiàn)在該窗口控件中。同時注冊回調(diào)函數(shù),并通過定時器,定時向該窗口控件發(fā)送滾動消息,實現(xiàn)自動滾屏[3]。而MARQUEE 的各種屬性,則通過窗口控件和內(nèi)置子頁面的渲染得到相應(yīng)的體現(xiàn)。
生成內(nèi)置子頁面的實現(xiàn)方式,使得滾動內(nèi)容不再受到限制,既可以是文字、表格、圖片,也可以是任何一段HTML 代碼所呈現(xiàn)出來的效果。當(dāng)滾動內(nèi)容是待解析的HTML代碼段時,代碼段可以和內(nèi)置子頁面一起送入瀏覽器解析流程完成解析[4]。
2.2內(nèi)置子頁面生成方式根據(jù)滾動方向不同進行設(shè)定
內(nèi)置子頁面的生成方式可分為兩類,首先將水平方向作為實例進行設(shè)定:以MARQUEE窗口的高度為高度,以MARQUEE 窗口的寬度為寬度,形成左右兩個空白邊距區(qū)域,拼接在滾動內(nèi)容左右。在窗口呈現(xiàn)的初始狀態(tài),即為頁面左空白邊距。當(dāng)可視區(qū)域窗口收到消息開始滾動時,內(nèi)容從可視窗口右側(cè)進入,向左滾動,即形成預(yù)期的滾動效果。當(dāng)滾動到末尾的時候,呈現(xiàn)給用戶的依然是空白區(qū)域,此時滾動結(jié)束,如果將內(nèi)置頁面重新定位到最初位置,重新開始一輪滾動,即獲得了循環(huán)滾動的效果[5]。MARQUEE頁面如圖1所示。第3期趙勇軍,等:在嵌入式瀏覽器中基于HTML的滾動顯示效果實現(xiàn)方法研究智能計算機與應(yīng)用第4卷
圖1MARQUEE頁面圖
Fig.1MARQUEE page figure
將待滾動的內(nèi)容添加到內(nèi)置子頁面之后,該頁面將會送入瀏覽器的解析流程,并和其它從網(wǎng)絡(luò)上獲得的頁面文件一樣,經(jīng)過瀏覽器的后續(xù)排版、渲染等流程,最終顯示給用戶。
創(chuàng)建內(nèi)置子頁面的代碼示例如下:
int marquee_htm_new(char *textcolor,char *bgcolor, int type,int width, int height, char* file_name, char* marquee_str)
{ FILE* fp = fopen(file_name, "w+");
if( fp == NULL )
return -1;
if(type == 0)
{/*direction is up or down*/fprintf(fp, "\n
\nfprintf(fp, " bgcolor=\"%s\"", bgcolor); fprintf(fp, " text=\"%s\"", textcolor); fprintf(fp, " style=\"font-size:%dpx\">\n", style->font->size); fprintf(fp, "
",height, height, width); fprintf(fp, "%s\n", marquee_str); fprintf(fp, |