freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式瀏覽器開(kāi)發(fā)—計(jì)算機(jī)(論文)(編輯修改稿)

2025-01-12 09:31 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 的內(nèi)容,直到遇到下一個(gè) /SCRIPT標(biāo)記。目前的 Bit Token 由于開(kāi)發(fā)時(shí)間所限,未對(duì)其加以特殊處理,存在一些問(wèn)題,但由于瀏覽器對(duì)Javascript 的支持是較復(fù)雜的工作,目前的 Netbit Browser 尚不予實(shí)現(xiàn),因而沒(méi)有導(dǎo)致明顯問(wèn)題,而“ HTML 智能分析”這個(gè)軟件只是需要對(duì) Javascript 進(jìn)行刪除操作,也不會(huì)造成影響。盡管如此,對(duì) SCRIPT的特殊處理還是有待完善,盡管這同時(shí)也會(huì)帶來(lái)一些問(wèn)題,需要進(jìn)行大量的測(cè)試,來(lái)保證新加入代碼的穩(wěn)定性。 正如前面所述, HTML 詞法分析是瀏覽器設(shè)計(jì)的基礎(chǔ)環(huán)節(jié)之一,但并非最重要和最具難度的環(huán)節(jié),若想開(kāi)發(fā)出效果較好的瀏覽器產(chǎn)品, 還要在布局和 GUI 設(shè)計(jì)上多下功夫。 第三章 瀏覽器 JavaScript支持的實(shí)現(xiàn) 本部份主要針對(duì) Mozilla和 Netscape 瀏覽器源代碼的 JavaScript 部份進(jìn)行了分析,闡述了瀏覽器 Javascript 實(shí)現(xiàn)的機(jī)制。 JavaScript 開(kāi)發(fā)環(huán)境 JavaScript Reference 與 JavaScript API: JavaScript Reference是 Mozilla所使用 JavaScript開(kāi)發(fā)環(huán)境,是使用 ANSI C的獨(dú)立的開(kāi)發(fā)包,據(jù) Mozilla 文檔介紹,該 開(kāi)發(fā)包 涉及 到超過(guò) 160家公司的版權(quán)。而且被廣泛使用,實(shí)際已成為了進(jìn)行 JavaScript 應(yīng)用開(kāi)發(fā)的標(biāo)準(zhǔn)平臺(tái)。 JavaScript Reference 可以 用于建立 包含 JavaScript runtime 的 Library或 DLL。既可以編譯成小的 shell 程序(像早期的 BASIC),又連接 Library后生成交互式的 JavaScript解釋器,也可以用來(lái)解釋 .js 文件。由于使用了 ANSI C編程,可以用 VC、 GCC 等編譯器在不同平臺(tái)下編譯。 生成的 shell 程序,對(duì)比瀏覽器對(duì) JavaScript 的 支持,相同之處是使用相同的包含 JavaScript runtime 的 Library 或 DLL,我們把這部份相同的Library 或 DLL 稱為 JavaScript API, 我們實(shí)際開(kāi)發(fā) JavaScript 應(yīng)用,也是在JavaScript API 基礎(chǔ)上工作,而不用過(guò)多考慮其內(nèi)部的實(shí)現(xiàn)。關(guān)于 JavaScript API,參見(jiàn) JavaScript API 詳解 。 JavaScript API 實(shí)際就是 Javscript 解釋器的對(duì)外接口函數(shù)庫(kù)。 JavaScript Engine JavaScript Engine 是瀏 覽器開(kāi)發(fā)者為了利用 JavaScript API 來(lái)實(shí)現(xiàn)實(shí)際應(yīng)用而設(shè)立的中間層,用于初始化 JavaScript 環(huán)境,提供對(duì) JavaScript 解釋、執(zhí)行的接口。瀏覽器主體程序的設(shè)計(jì)者可以通過(guò) JavaScript Engine,方便的實(shí)現(xiàn)各種應(yīng)用,畢竟 JavaScript API 太基礎(chǔ)了,直接使用不太方便。 下面介紹 JavaScript Engine 的主要功能和實(shí)現(xiàn)方法。這也包含了利用JavaScript API 進(jìn)行應(yīng)用的基本思路。 (1) 初始化: 內(nèi)存分配: rt=JS_Init(10000L)。 初始化 cx: cx = JS_NewContext(rt, STACK_CHUNK_SIZE)。 初始化 globalObj: globalObj = JS_NewObject(cx, amp。globalClass, 0, 0)。 定義標(biāo)準(zhǔn)類: JS_InitStandardClasses(cx, globalObj)。 定義系統(tǒng)函數(shù): JS_DefineFunctions(cx, globalObj, g_functions)。 定義報(bào)錯(cuò)函數(shù): JS_SetErrorReporter(cx,JS_ErrorReporter)。 注冊(cè)其它類: RegisterClassPoint (cx,globalObj)。 RegisterClassSize (cx,globalObj)。 RegisterClassRect (cx,globalObj)。 RegisterClassPolygon (cx,globalObj)。 RegisterClassColorKey (cx,globalObj)。 RegisterClassTDTimer (cx,globalObj)。 初始化定時(shí)器: TDTimerListInit()。 (2) 提供對(duì) JavaScript 解釋、執(zhí)行的接口函數(shù): TD_EvaluateScript(JSContext *cx,JSObject *obj, const char *bytes, uintN length,const char *filename, uintN lineno,jsval *rval) JavaScript與瀏覽器接合 基本概念: JavaScript 操作 HTML 元素的常見(jiàn)方式 例: htmlhead script! function ChangeImage(index) {=a+index+.gif。} /script /head a onmouseover=ChangeImage(0)。軍人 /abr a onmouseover=ChangeImage(1)。眼睛 /abr img id=image0 src=/img /html 當(dāng)鼠標(biāo)移到文字上時(shí),觸發(fā)事件 mouseover,調(diào)用 ChangeImage()函數(shù),使得圖像源 (SRC)發(fā)生變化,重新調(diào)入新圖片。 由此產(chǎn)生 兩個(gè)關(guān)鍵問(wèn)題: 1. javascript 如何獲取 HTML 元素的名稱和屬性 。 2. javascript 如何改變 HTML 元素的屬性,并操作 WIDGET 重畫 。 下面分別闡述這兩個(gè)問(wèn)題: 首先介紹涉及到的瀏覽器流程: PARSE Tokenize BuildModel BuildPres ProcessElement WidgetPaint 問(wèn)題 1 解決: HTML 元素作為 Javascript 對(duì)象進(jìn)行注冊(cè) 。 注冊(cè)過(guò)程在 BuildModel 中進(jìn)行。 BuildModel的首要任務(wù)是將 Token 后的結(jié)點(diǎn)按包含關(guān)系展成一棵樹(shù)。 其次就是要將某些 結(jié)點(diǎn)注冊(cè)為 JavaScript 對(duì)象。 注冊(cè)的過(guò)程是: 定義新對(duì)象 : JSObject *proto。 初始化該對(duì)象 : TD_JSXMLElementClassInit(JS_GetGlobalContext(), (void **)amp。proto)) 使用 JS_DefineObject 或 JS_NewObject 定義對(duì)象屬性 : 根據(jù)是否定義了該元素的名稱區(qū)別對(duì)待: if(TD_XMLContentIsNamedItem(aElement,amp。aName)) { parent = js_GetGlobalObject()。 *aReturn=JS_DefineObject(JS_GetGlobalContext(),js_GetGlobalObject(),aNamemStr,amp。ElementClass,proto,JSPROP_ENUMERATE)。 } else { parent=aElementparentmScriptObject。 *aReturn = JS_NewObject(JS_GetGlobalContext(), amp。ElementClass, proto, parent)。 } 將對(duì)象加入 : JS_SetPrivate(JS_GetGlobalContext(), (JSObject *)*aReturn, aElement)。這樣,在編譯時(shí), HTML 元素的標(biāo)識(shí)就能被 Javascript 編譯器識(shí)別,否則會(huì)報(bào)錯(cuò)變量未定義。 問(wèn)題 2 解決:利用注冊(cè)給對(duì)象的函數(shù)實(shí)現(xiàn)操作符的功能化 。 具體可理解為:當(dāng) =” ” 被執(zhí)行時(shí),相當(dāng)于為對(duì)象設(shè)置或改變屬性,此時(shí) SetElementProperty 函數(shù)被調(diào)用(該函數(shù)在注冊(cè)該對(duì)象時(shí)由JSXMLElementClassInit 捆 綁 給 該 對(duì) 象 , 其 內(nèi) 容 由 用 戶 自 己 定 義 ),SetElementProperty 通過(guò)函數(shù)指針調(diào)用函數(shù) TD_JSXMLSetAtrByID,改變結(jié)點(diǎn)樹(shù)上結(jié)點(diǎn)屬性,并重新生成該節(jié)點(diǎn)對(duì)應(yīng)的 widget,重畫界面。 問(wèn)題 3:如何建立 Javascript 對(duì)象與結(jié)點(diǎn)樹(shù)上結(jié)點(diǎn)的對(duì)應(yīng)? 解決 : Javascript 對(duì)象與結(jié)點(diǎn)樹(shù)是同時(shí)生成的,它們的共同性質(zhì)是結(jié)點(diǎn)具有相同屬性, Javascript 對(duì)象根據(jù) ID 屬性查找樹(shù),找到要操作的對(duì)應(yīng)結(jié)點(diǎn)。 瀏覽器消息響應(yīng) 在主消息循環(huán)中調(diào)用 TDWidgetProcessMsg,處理與 widget 有關(guān)消息。 首先:取得當(dāng)前焦點(diǎn)所在的 widget pWidget=TDWidgetGetAtPoint(pThis,pt,amp。index)。 處理該 widget 對(duì)該消息的響應(yīng)。 最后一般為調(diào)用 JavaScript 執(zhí)行,實(shí)現(xiàn)實(shí)際響應(yīng)。 TDVOID TDWidgetDoAction(TDPWidgetAction pAnchor) { jsval jval。 if(pAnchor) TD_EvaluateScript(JS_GetGlobalContext(),js_GetGlobalObject(), pAnchor,pAnchor,TDNULL,0,amp。jval)。 } 其中 pAnchor 即為界面對(duì)象 (widget)對(duì)應(yīng)的 JavaScript 源碼,解釋執(zhí)行的結(jié)果就是調(diào)用為該對(duì)象注冊(cè)的函數(shù)來(lái)重畫該 widget,從而實(shí)現(xiàn)動(dòng)態(tài)效果。 第四章 Linux程序開(kāi)發(fā)技術(shù)及 GTK圖形程序開(kāi)發(fā) Linux 下的程序開(kāi)發(fā)環(huán)境 基本知識(shí) (1) 標(biāo)準(zhǔn) (ANSI C, POSIX, SVID, XPG, ...) ANSI C:這一標(biāo)準(zhǔn)是 ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)局)于 1989 年制定的 C 語(yǔ)言標(biāo)準(zhǔn)。 后來(lái)被 ISO(國(guó)際標(biāo)準(zhǔn)化組織)接受為標(biāo)準(zhǔn),因此也稱為 ISO C。 POSIX:該標(biāo)準(zhǔn)最初由 IEEE 開(kāi)發(fā)的標(biāo)準(zhǔn)族,部分已經(jīng)被 ISO 接受為國(guó)際標(biāo)準(zhǔn)。 SVID: System V 的接口描述。 System V 接口描述( SVID)是描述 ATamp。T Unix System V 操作 系統(tǒng)的文檔,是對(duì) POSIX 標(biāo)準(zhǔn)的擴(kuò)展超集。 XPG: X/Open 可移植性指南。 X/Open 可移植性指南(由 X/Open Company, Ltd.出版), 是比 POSIX 更為一般的標(biāo)準(zhǔn)。 (2) 函數(shù)庫(kù)和系統(tǒng)調(diào)用 glibc:眾所周知, C 語(yǔ)言并沒(méi)有為常見(jiàn)的操作,例如輸入 /輸出、內(nèi)存管理,字符串操作等提供內(nèi)置的支持。相反,這些功能一般由標(biāo)準(zhǔn)的“函數(shù)庫(kù)”來(lái)提供。GNU 的 C 函數(shù)庫(kù),即 glibc,是 Linux 上最重要的函數(shù)庫(kù),它定義了 ISO C 標(biāo)準(zhǔn)指定的所有的庫(kù)函數(shù),以及由 POSIX 或其他 UNIX 操作系統(tǒng)變種指定的附加特色,還包括有與 GNU 系統(tǒng)相關(guān)的擴(kuò)展。目前,流行的 Linux 系統(tǒng)使用 glibc 以上 的版本。 glibc 基于如下標(biāo)準(zhǔn): ISO C: C 編程語(yǔ)言的國(guó)際標(biāo)準(zhǔn),即 ANSI C, POSIX, Berkeley Unix, SVID, XPG。 其他重要函數(shù)庫(kù) :除 glibc 之外,流行的 Linux 發(fā)行版中還包含有一些其他的函數(shù)庫(kù),這些函數(shù)庫(kù)具有重要地位,例如: GNU Libtool, CrackLib, LibGTop。圖形文件操作函數(shù)庫(kù)包括: libungif、 libtiff、 libpng、 Imlib, libjpeg 等,可分別用來(lái)操作 GIF、 TIFF、 PNG、 JPEG 以及其他一些格式圖形 文件。 (3) 系統(tǒng)調(diào)用 系統(tǒng)調(diào)用是操作系統(tǒng)提供給外部程序的接口。在 C 語(yǔ)言中,操作系統(tǒng)的系統(tǒng)調(diào)用通常通過(guò)函數(shù)調(diào)用的形式完成,在 Linux 系統(tǒng)中,系統(tǒng)調(diào)用函數(shù)定義在 glibc 中。 談到系統(tǒng)調(diào)用時(shí),需要注意如下幾點(diǎn):系統(tǒng)調(diào)用函數(shù)通常在成功時(shí)返回 0 值,不成功時(shí)返回非零值。 errno 中包含有錯(cuò)誤代碼。系統(tǒng)調(diào)用是一個(gè)非常耗時(shí) 的過(guò)程。 (4) C 語(yǔ)言編程風(fēng)格 良好的編程風(fēng)格可以在許多方面幫助開(kāi)發(fā)人員,可以增加代碼的可讀性,并幫助你理清頭緒。編程風(fēng)格最能體現(xiàn)一個(gè)程序員的綜合素質(zhì)。 在 Linux 中,我們經(jīng)??吹降氖嵌x非常簡(jiǎn)單的函數(shù)接口和變量名稱。 C 語(yǔ)言最初來(lái)自 UNIX 操作系統(tǒng),與 UNIX 的設(shè)計(jì)原則一樣, C 語(yǔ)言被廣泛認(rèn)可和使用的一個(gè)重要原因是它的靈活性以及簡(jiǎn)潔性。在利用 C 語(yǔ)言編寫程序時(shí),應(yīng)當(dāng)符合其簡(jiǎn)潔的設(shè)計(jì)原則,而不應(yīng)當(dāng)使用非常復(fù)雜的變量命名方法。 Linus 為 Linux 內(nèi)核定義的 C
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1