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

正文內(nèi)容

瀏覽器開發(fā)-資料下載頁

2025-05-11 21:48本頁面

【導(dǎo)讀】羅袆膅薆袁裊芇莈螇裊莀薄蚃襖聿莇蕿羃膂薂袈芄蒞螄羈蒆薀螀羀膆蒃蚆罿羋蠆薂罿莁蒂袀羈肀蚇螆羇膃蒀螞肆芅蚅薈肅莇蒈袇肄肇芁袃肅艿薆蝿肅莂荿蚅肂肁薅薁肁膃莈衿肀芆薃螅腿莈莆蟻膈肈薁薇膇膀莄羆膇莂蝕袂膆蒅蒂螈膅膄蚈蚄螁芇蒁薀螁荿蚆衿袀聿葿螅衿膁蚄蝕袈莃蕆蚆袇蒆莀羅袆膅薆袁裊芇莈螇裊莀薄蚃襖聿莇蕿羃膂薂袈芄蒞螄羈蒆薀螀羀膆蒃蚆罿羋蠆薂罿莁蒂袀羈肀蚇螆羇膃蒀螞肆芅蚅薈肅莇蒈袇肄肇芁袃肅艿薆蝿肅莂荿蚅肂肁薅薁肁膃莈衿肀芆薃螅腿莈莆蟻膈肈薁薇膇膀莄羆膇莂蝕袂膆蒅蒂螈膅膄蚈蚄螁芇蒁薀螁荿蚆衿袀聿葿螅衿膁蚄蝕袈莃蕆蚆袇蒆莀羅袆膅薆袁裊芇莈螇裊莀薄蚃襖聿莇蕿羃膂薂袈芄蒞螄羈蒆薀螀羀膆蒃蚆罿羋蠆薂罿莁蒂袀羈肀蚇螆羇膃蒀螞肆芅蚅

  

【正文】 考慮其內(nèi)部的實現(xiàn)。關(guān)于 JavaScript API,參見 JavaScript API 詳解 。 JavaScript API 實際就是 Javscript解釋器的對外接口函數(shù)庫。 JavaScript Engine JavaScript Engine是瀏覽器開發(fā)者為了利用 JavaScript API來實現(xiàn)實際應(yīng)用而設(shè)立的中間層,用于初始化 JavaScript 環(huán)境,提供對 JavaScript 解釋、執(zhí)行的接口。瀏覽器主體程序的設(shè)計者可以通過 JavaScript Engine,方便的實現(xiàn)各種應(yīng)用,畢竟JavaScript API 太基礎(chǔ)了,直接使用不太方便。 下面介紹 JavaScript Engine 的主要功能和實現(xiàn)方 法。這也 19 包含了利用 JavaScript API 進行應(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)。 定義標準類: JS_InitStandardClasses(cx, globalObj)。 定 義 系 統(tǒng) 函 數(shù) : JS_DefineFunctions(cx, globalObj, g_functions)。 定義報錯函數(shù): JS_SetErrorReporter(cx,JS_ErrorReporter)。 注冊其它類: RegisterClassPoint (cx,globalObj)。 RegisterClassSize (cx,globalObj)。 RegisterClassRect (cx,globalObj)。 RegisterClassPolygon (cx,globalObj)。 RegisterClassColorKey (cx,globalObj)。 RegisterClassTDTimer (cx,globalObj)。 初始化定時器: TDTimerListInit()。 (2) 提供對 JavaScript 解釋、執(zhí)行的接口函數(shù): TD_EvaluateScript(JSContext *cx,JSObject *obj, const char *bytes, uintN length,const char *filename, uintN lineno,jsval *rval) JavaScript與瀏覽器接合 基本概念: JavaScript 操作 HTML 元素的常見方式 例: htmlhead script! function ChangeImage(index) {=a+index+.gif。} /script /head a onmouseover=ChangeImage(0)。軍人 /abr a onmouseover=ChangeImage(1)。眼睛 /abr 20 img id=image0 src=/img /html 當鼠標移到文字上時,觸發(fā)事件 mouseover ,調(diào)用ChangeImage()函數(shù),使得圖像源 (SRC)發(fā)生變化,重新調(diào)入新圖片。 由此產(chǎn)生兩個關(guān)鍵問題: 1. javascript 如何獲取 HTML 元素的名稱和屬性 。 2. javascript 如何改變 HTML 元素的屬性,并操作 WIDGET 重畫 。 下面分別闡述這兩個問題: 首先介紹涉及到的瀏覽器流程: 問題 1 解決: HTML 元素作為 Javascript 對象進行注冊 。 注冊過程在 BuildModel 中進行。 BuildModel的首要任務(wù)是將Token 后的結(jié)點按包含關(guān)系展成一棵樹。 其次就是要將某些 結(jié)點注冊為 JavaScript 對象。 注冊的過程是: 定義新對象 : JSObject *proto。 初始化該對象 : TD_JSXMLElementClassInit(JS_GetGlobalContext(), (void **)amp。proto)) PARSE Tokenize BuildModel BuildPres ProcessElement WidgetPaint 21 使用 JS_DefineObject 或 JS_NewObject 定義對象屬性 : 根據(jù)是否定義了該元素的名稱區(qū)別對待: 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)。 } 將對象加入 : JS_SetPrivate(JS_GetGlobalContext(), (JSObject *)*aReturn, aElement)。這樣,在編譯時, HTML 元素的標識就能被 Javascript編譯器識別,否則會報錯變量未定義。 問題 2 解決:利用注冊給對象的函數(shù)實現(xiàn)操作符的功能化 。 具體可理解為:當 =” ” 被執(zhí)行時,相當于為對象設(shè)置或改變屬性,此時 SetElementProperty 函數(shù)被調(diào)用(該函數(shù)在注冊該對象時由 JSXMLElementClassInit 捆 綁給該對象,其內(nèi)容由用戶自己定義), SetElementProperty 通過函數(shù)指針調(diào)用函數(shù) TD_JSXMLSetAtrByID,改變結(jié)點樹上結(jié)點屬性,并重新生成該節(jié)點對應(yīng)的 widget,重畫界面。 問題 3:如何建立 Javascript 對象與結(jié)點樹上結(jié)點的對應(yīng)? 解決 : Javascript 對象與結(jié)點樹是同時生成的,它們的共同性質(zhì)是結(jié)點具有相同屬性, Javascript 對象根據(jù) ID 屬性查找樹,找到要操作的對應(yīng)結(jié)點。 瀏覽器消息響應(yīng) 在主消息循環(huán)中調(diào)用 TDWidgetProcessMsg,處理與 widget有關(guān)消息。 首先:取得當前焦點所在的 widget 22 pWidget=TDWidgetGetAtPoint(pThis,pt,amp。index)。 處理該 widget 對該消息的響應(yīng)。 最后一般為調(diào)用 JavaScript 執(zhí)行,實現(xiàn)實際響應(yīng)。 TDVOID TDWidgetDoAction(TDPWidgetAction pAnchor) { jsval jval。 if(pAnchor) TD_EvaluateScript(JS_GetGlobalContext(),js_GetGlobalObject(), pAnchor,pAnchor,TDNULL,0,amp。jval)。 } 其中 pAnchor 即為界面對象 (widget)對應(yīng)的JavaScript 源碼,解釋執(zhí)行的結(jié)果就是調(diào)用為該對象注冊的函數(shù)來重畫該 widget,從而實現(xiàn)動態(tài)效果。 23 第四章 Linux 程序開發(fā)技術(shù)及 GTK圖形程序開發(fā) Linux 下的程序開發(fā)環(huán)境 基本知識 (1) 標準 (ANSI C, POSIX, SVID, XPG, ...) ANSI C:這一標準是 ANSI(美國國家標準局)于 1989 年制定的 C 語言標準。 后來被 ISO(國際標準化組織)接受為標準,因此也稱為 ISO C。 POSIX:該標準最初由 IEEE 開發(fā)的標準族,部分已經(jīng)被 ISO 接受為國際標準。 SVID: System V 的接口描述。 System V 接口描述( SVID)是描述 ATamp。T Unix System V 操作 系統(tǒng)的文檔,是對 POSIX 標準的擴展超集。 XPG: X/Open 可移植性指 南。 X/Open 可移植性指南(由 X/Open Company, ), 是比 POSIX 更為一般的標準。 (2) 函數(shù)庫和系統(tǒng)調(diào)用 glibc:眾所周知, C 語言并沒有為常見的操作,例如輸入 /輸出、內(nèi)存管理,字符串操作等提供內(nèi)置的支持。相反,這些功能一般由標準的“函數(shù)庫”來提供。 GNU 的 C 函數(shù)庫,即 glibc,是 Linux 上最重要的函數(shù)庫,它定義了 ISO C 標準指定的所有的庫函數(shù),以及由 POSIX 或其他 UNIX 操作系統(tǒng)變種指定的附加特色,還包括有與 GNU 系統(tǒng)相 關(guān)的擴展。目前,流行的 Linux 系統(tǒng)使用 glibc 以上的版本。 glibc 基于如下標準: ISO C: C 編程語言的國際標準,即 ANSI C, POSIX, Berkeley Unix, SVID, XPG。 其他重要函數(shù)庫 :除 glibc 之外,流行的 Linux 發(fā)行版中還包含有一些其他的函數(shù)庫,這些函數(shù)庫具有重要地位,例如: GNU Libtool, CrackLib, LibGTop。圖形文件操作函數(shù)庫包括: libungif、 libtiff、 libpng、 Imlib, libjpeg 等,可 分別用來操作 GIF、 TIFF、 PNG、 JPEG 以及其他一些格式圖形文件。 (3) 系統(tǒng)調(diào)用 24 系統(tǒng)調(diào)用是操作系統(tǒng)提供給外部程序的接口。在 C 語言中,操作系統(tǒng)的系統(tǒng)調(diào)用通常通過函數(shù)調(diào)用的形式完成,在 Linux 系統(tǒng)中,系統(tǒng)調(diào)用函數(shù)定義在 glibc 中。 談到系統(tǒng)調(diào)用時,需要注意如下幾點:系統(tǒng)調(diào)用函數(shù)通常在成功時返回 0 值,不成功時返回非零值。 errno 中包含有錯誤代碼。系統(tǒng)調(diào)用是一個非常耗時 的過程。 (4) C 語言編程風格 良好的編程風格可以在許多方面幫助開發(fā)人員,可以增加代碼的可讀性 ,并幫助你理清頭緒。編程風格最能體現(xiàn)一個程序員的綜合素質(zhì)。 在 Linux 中,我們經(jīng)常看到的是定義非常簡單的函數(shù)接口和變量名稱。 C 語言最初來自 UNIX 操作系統(tǒng),與 UNIX 的設(shè)計原則一樣, C 語言被廣泛認可和使用的一個重要原因是它的靈活性以及簡潔性。在利用 C 語言編寫程序時,應(yīng)當符合其簡潔的設(shè)計原則,而不應(yīng)當使用非常復(fù)雜的變量命名方法。 Linus 為 Linux 內(nèi)核定義的 C 語言編碼風格要點如下: 縮進時,使用長度為 8 個字符寬的 Tab 鍵。如果程序的縮進超過 3 級,則應(yīng)考慮重新設(shè) 計程序。 大括號的位置。除函數(shù)的定義體外,應(yīng)當將左大括號放在行尾,而將右大括號放在行首。函數(shù)的定義體應(yīng)將左右大括號放在行首。如下所示: int function(int x, int y) { if (x == y) { ... } else { ... } return 0。 } 應(yīng)采用簡潔的命名方法。對變量名,不贊成使用大小寫混寫的形式,但鼓勵使用描述性的名稱;盡可能不使用全局變量;不 25 采 用匈牙利命名法表示變量的類型;采用短小精悍的名稱表示局部變量;保持函數(shù)短小,從而避免使用過多的局部變量。保持函數(shù)短小精悍。不應(yīng)過分強調(diào)注釋的作用,應(yīng)盡量采用好的編碼風格而不是添加過多的注釋。 (5) 庫和頭文件的保存位置 函數(shù)庫: /lib:系統(tǒng)必備共享庫 /usr/lib:標準共享庫和靜態(tài)庫 /usr/i486linuxlibc5/lib: libc5 兼容性函數(shù)庫 /usr/X11R6/lib: X11R6 的函數(shù)庫 /usr/local/lib:本地函數(shù)庫 頭文件: /usr/include:系統(tǒng) 頭文件 /usr/local/include:本地頭文件 Linux 上的編譯器和調(diào)試器 (1) Linux 上的 C/C++ 編譯器和調(diào)試器 運行 gcc/egcs: Linux 中最重要的軟件開發(fā)工具是 GCC。 GCC 是 GNU 的 C 和 C++ 編譯器。實際上, GCC 能夠編譯三種語言: C、C++ 和 Object C( C 語言的一種面向?qū)ο髷U展)。利用 gcc 命令可同時編譯并連接 C 和 C++ 源程序。 例如利用如下的命令可編譯生成可執(zhí)行文件,并執(zhí)行程序: $ gcc o factorial $ ./factorial 5 GCC 可
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1