本發(fā)明涉及瀏覽器技術,特別是涉及使用瀏覽器Web數(shù)據(jù)庫的方法和系統(tǒng)。
背景技術:早期的瀏覽器只能簡單的通過Cookie在本地保存小段文本數(shù)據(jù),目前的主流瀏覽器已經(jīng)支持更加強大的本地存儲方案,如WebStorage和WebSQLDatabase技術標準。另外還有正在快速發(fā)展不斷完善的瀏覽器數(shù)據(jù)庫標準IndexedDB,這個標準用于在瀏覽器中存儲大量結構化的數(shù)據(jù),并提供索引以保證高效率的查詢。相比WebSQLDatabase中使用SQL語句作為字符串參數(shù)傳遞給JavaScriptAPI,輕量級的NoSQL非關系型數(shù)據(jù)庫IndexedDB的語法結構更為簡單,讓開發(fā)者可以更容易的實現(xiàn)支持本地數(shù)據(jù)庫的Web應用。在瀏覽器本地存儲數(shù)據(jù)Web應用來說非常重要,因為互聯(lián)網(wǎng)并不是無處不在,也沒有足夠快。本地存儲讓開發(fā)者將一些數(shù)據(jù)保存在本地計算機以便快速處理,這意味著如Web郵箱,在線文檔編輯等應用可以離線使用,也讓數(shù)據(jù)可以緩存在本地以便將來使用,這使得Web應用更快更可靠,用戶體驗也更好。對Web應用中的大規(guī)模數(shù)據(jù),則有必要使用數(shù)據(jù)庫來保存。數(shù)據(jù)庫中的數(shù)據(jù)是隨著業(yè)務邏輯不斷發(fā)生變化的,然而目前的瀏覽器數(shù)據(jù)庫并沒有提供相應機制使Web應用能方便的獲知這些數(shù)據(jù)變化。Web應用只能通過不同頁面之間進行交互來獲知數(shù)據(jù)的變化情況,這樣實現(xiàn)比較低效或者造成應用各模塊耦合性較高。
技術實現(xiàn)要素:本發(fā)明提出一種使Web應用獲取數(shù)據(jù)庫變化的系統(tǒng)和方法,使得Web應用能及時有效的獲取瀏覽器Web數(shù)據(jù)庫的數(shù)據(jù)變化。第一方面是提供一種使Web應用獲取數(shù)據(jù)庫變化的系統(tǒng),該系統(tǒng)包括瀏覽器、Web數(shù)據(jù)庫和運行于所述的瀏覽器中的Web應用,所述的瀏覽器中包括:瀏覽器的數(shù)據(jù)庫處理部件獲取所述Web應用的操作請求,并根據(jù)所述操作請求完成對Web數(shù)據(jù)庫的操作;瀏覽器的事件處理部件根據(jù)Web數(shù)據(jù)庫中完成的操作生成的數(shù)據(jù)庫事件,所述數(shù)據(jù)庫事件被所述Web應用所監(jiān)聽;在監(jiān)聽到有數(shù)據(jù)庫事件生成時,所述Web應用從所述數(shù)據(jù)庫事件的屬性中獲取數(shù)據(jù)庫的變化的內容。結合第一方面的第一種可能實現(xiàn)方式,所述Web應用包含第一頁面和第二頁面時,所述系統(tǒng)具體為:瀏覽器的數(shù)據(jù)庫處理部件獲取所述Web應用的操作請求,并根據(jù)所述操作請求完成對Web數(shù)據(jù)庫的操作;所述操作請求來自所述Web應用的第一頁面;瀏覽器的事件處理部件根據(jù)Web數(shù)據(jù)庫中完成的操作生成的數(shù)據(jù)庫事件,所述數(shù)據(jù)庫事件被所述Web應用所監(jiān)聽;在監(jiān)聽到有數(shù)據(jù)庫事件生成時,所述Web應用從所述數(shù)據(jù)庫事件的屬性中獲取數(shù)據(jù)庫的變化的內容,并將第二頁面中與所述數(shù)據(jù)庫的變化的內容相關部分做同步處理。結合第一方面的第二種可能實現(xiàn)方式,所述的數(shù)據(jù)庫事件的屬性,具體包括:描述所述Web數(shù)據(jù)庫的變更信息,其中,所述變更信息包括根據(jù)所述Web應用的操作請求在數(shù)據(jù)庫已操作的數(shù)據(jù)庫名、表名和變更條目;所述Web應用從所述數(shù)據(jù)庫事件的屬性中獲取數(shù)據(jù)庫的相關內容,具體包括:所述Web應用從數(shù)據(jù)庫事件的屬性中獲取所述數(shù)據(jù)庫名、表名和變更條目,確定Web數(shù)據(jù)庫中的變化的內容。結合第一種實現(xiàn)方式或第二種實現(xiàn)方式的第三種可能實現(xiàn)方式,所述變更條目,具體包括:數(shù)據(jù)記錄的操作類型、鍵值、新的記錄值和舊的記錄值中的一項或多項。結合第三種實現(xiàn)方式的第四種可能實現(xiàn)方式,變更條目至少包括以下操作類型中的一種:所述操作類型為清空時,對應變更的鍵值、新的記錄值和舊的記錄值都為空;所述操作類型為刪除時,對應變更條目的鍵值為已刪除記錄的鍵值,對應變更條目的舊的記錄值為已刪除記錄的記錄值;所述操作類型為增加時,對應變更條目的鍵值為已增加記錄的鍵值,對應變更條目的新的記錄值為已增加記錄的記錄值;所述操作類型為更新時,對應變更條目的鍵值為已更新記錄的鍵值,對應變更條目的新的記錄值為已更新記錄的新記錄值,對應變更條目的舊的記錄值為已更新記錄的舊記錄值。結合第四種可能的第五種可能,如果所述瀏覽器中的Web應用的操作請求為存放操作,則所述根據(jù)所述操作請求完成對Web數(shù)據(jù)庫的操作,還包括:瀏覽器的數(shù)據(jù)庫處理部件根據(jù)該操作中的數(shù)據(jù)庫名、表名和鍵值來檢查數(shù)據(jù)庫中是否已經(jīng)存在與所述數(shù)據(jù)庫名、表名和鍵值均相同的記錄,如果所述記錄已經(jīng)存在,則確定所述存放操作轉換為更新條目;如果數(shù)據(jù)庫中沒有存在相應記錄,則確定所述存放操作轉換為增加條目。結合第四種實現(xiàn)方式的第六種可能實現(xiàn)方式,所述變更條目按照對應數(shù)據(jù)庫操作的時間順序排列,如果在一個Web應用的操作請求中對一條記錄進行了多于一次的操作,則所述的變更條目中對該記錄只包含最后一次的操作。結合上述任意一種實現(xiàn)方式的第七種可能實現(xiàn)方式:所述瀏覽器中Web應用用于監(jiān)聽數(shù)據(jù)庫事件的為:window、document、body或數(shù)據(jù)庫對象其中的一種。本發(fā)明的第二方面是提供一種用于使Web應用獲取數(shù)據(jù)庫變化的方法,其中,包括瀏覽器和Web數(shù)據(jù)庫、第一Web應用和第二Web應用,所述方法包括:獲取第一Web應用的操作請求,并根據(jù)所述操作請求完成對Web數(shù)據(jù)庫的操作;其中第一Web應用和第二Web應用運行于所述瀏覽器中;根據(jù)Web數(shù)據(jù)庫中完成的操作生成的數(shù)據(jù)庫事件,所述數(shù)據(jù)庫事件被第二Web應用所監(jiān)聽;在監(jiān)聽到有數(shù)據(jù)庫事件生成時,所述第二Web應用從所述數(shù)據(jù)庫事件的屬性中獲取數(shù)據(jù)庫的變化的內容。結合第二方面的第一種可能實現(xiàn)方式,所述的數(shù)據(jù)庫事件的屬性,具體包括:描述所述Web數(shù)據(jù)庫的變更信息,其中,所述變更信息包括所述第一Web應用的操作請求所要操作的數(shù)據(jù)庫名、表名和變更條目;則所述第二Web應用從所述數(shù)據(jù)庫事件的屬性中獲取數(shù)據(jù)庫的相關內容,具體包括:所述第二Web應用從數(shù)據(jù)庫事件的屬性中獲取所述數(shù)據(jù)庫名、表名和變更條目,確定Web數(shù)據(jù)庫中的變化的內容。結合第一種實現(xiàn)方式的第二種可能實現(xiàn)方式,所述變更條目,具體包括:數(shù)據(jù)記錄的操作類型、鍵值、新的記錄值和舊的記錄值中的一項或多。結合第二種實現(xiàn)方式的第三種可能實現(xiàn)方式,變更條目至少包括以下操作類型中的一種:所述操作類型為清空時,對應變更的鍵值、新的記錄值和舊的記錄值都為空;所述操作類型為刪除時,對應變更條目的鍵值為已刪除記錄的鍵值,對應變更條目的舊的記錄值為已刪除記錄的記錄值;所述操作類型為增加時,對應變更條目的鍵值為已增加記錄的鍵值,對應變更條目的新的記錄值為已增加記錄的記錄值;所述操作類型為更新時,對應變更條目的鍵值為已更新記錄的鍵值,對應變更條目的新的記錄值為已更新記錄的新記錄值,對應變更條目的舊的記錄值為已更新記錄的舊記錄值。結合第三種實現(xiàn)方式的第四種可能實現(xiàn)方式,如果所述瀏覽器中的第一Web應用的操作請求為存放操作,則所述并根據(jù)所述操作請求完成對Web數(shù)據(jù)庫的操作,具體包括:根據(jù)該操作中的數(shù)據(jù)庫名、表名和鍵值來檢查數(shù)據(jù)庫中是否已經(jīng)存在有與所述數(shù)據(jù)庫名、表名和鍵值均相同的記錄,如果所述記錄已經(jīng)存在,則確定將所述存放操作轉換為更新條目;如果數(shù)據(jù)庫中沒有存在相應記錄,則確定將所述存放操作轉換為增加條目。結合上述任意一種實現(xiàn)方式的的第五種可能實現(xiàn)方式,第一Web應用的操作請求中攜帶數(shù)據(jù)庫事件參數(shù),以便根據(jù)所述參數(shù)確定在數(shù)據(jù)庫事務成功處理完成后是否產(chǎn)生數(shù)據(jù)庫事件。本發(fā)明上述各方面是通過瀏覽器根據(jù)Web數(shù)據(jù)庫的變化產(chǎn)生相應的數(shù)據(jù)庫事件,使瀏覽器中的Web應用可以監(jiān)聽該數(shù)據(jù)庫事件,并分配相應的事件處理函數(shù),從而使得Web應用可以在數(shù)據(jù)庫事件的屬性中獲取到數(shù)據(jù)庫變化,并進行相應的處理。這樣一個Web應用的不同頁面或不同模塊之間可以更容易的獲取到數(shù)據(jù)庫的變化。附圖說明為了更清楚地說明本發(fā)明實施例的技術方案,下面將對本發(fā)明實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面所描述的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實施方式的計算環(huán)境示意圖;圖2是本發(fā)明實施方式的信令流程圖;圖3是本發(fā)明實施方式的瀏覽器框架示意圖;圖4是本發(fā)明實施方式的數(shù)據(jù)庫事件的內容;圖5是本發(fā)明實施方式的數(shù)據(jù)庫事件的另一種形式的內容;圖6是本發(fā)明另一種實施方式的信令流程圖;圖7是本發(fā)明實施方式的產(chǎn)生數(shù)據(jù)庫事件的步驟;圖8是本發(fā)明實施方式的確定數(shù)據(jù)庫事件屬性的步驟。具體實施方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都應屬于本發(fā)明保護的范圍。在說明書中詳細描述的數(shù)據(jù)結構和代碼通常存儲在計算機可讀存儲介質中,其可以是能夠存儲供計算機系統(tǒng)的代碼和/或數(shù)據(jù)的任何設備或者介質。這包括但不限于:易失性存儲器,非易失性存儲器,磁性和光學存儲設備,諸如磁盤、磁帶、CD、DVD,或者能夠存儲計算機可讀介質的目前已知或以后開發(fā)的其他介質。本發(fā)明中所說的計算機指基于微處理器的具有計算能力的終端設備,包括但不限于個人電腦,平板電腦,便攜電腦和手機等任何類型的計算機系統(tǒng)。本發(fā)明的一個實施方式是提供一種獲取Web數(shù)據(jù)庫變化的系統(tǒng),參閱圖1,該系統(tǒng)的計算環(huán)境100包括:瀏覽器101、Web數(shù)據(jù)庫102、CPU處理器106。瀏覽器101中包括:數(shù)據(jù)庫處理部件104、事件處理部件105和Web應用103。每個Web應用可以在瀏覽器中打開多個頁面,如圖1中的頁面A、頁面B和頁面C都屬于同一個Web應用,通常這些頁面的URL地址都屬于同一個域,如都屬于www.huawei.com,而其中頁面A的地址可以為www.huaweidevice.com/cn/method=index,而頁面B的地址可以為www.huaweidevice.com/cn/method=getFaqInfo=9097。另外Web應用也可以是瀏覽器擴展,這些瀏覽器擴展的構成通常和Web應用一樣主要由HTML和JavaScript所構成,并可以通過瀏覽器創(chuàng)建和訪問Web數(shù)據(jù)庫。每個Web應用可以通過瀏覽器創(chuàng)建一個或多個Web數(shù)據(jù)庫,Web數(shù)據(jù)庫通常以文件形式存放在計算環(huán)境中,可以是本地計算機也可以在網(wǎng)絡中的其他計算機上。本發(fā)明的Web應用獲取數(shù)據(jù)庫變化的方案不僅適用于同一個Web應用內部之間進行,如上述頁面A、頁面B之間;還適用于不同Web應用之間進行,如上述瀏覽器的擴展之間。該系統(tǒng)的方法步驟主要包括:S101、瀏覽器的數(shù)據(jù)庫處理部件104獲取所述Web應用103的操作請求,并根據(jù)所述操作請求完成對Web數(shù)據(jù)庫的操作;優(yōu)選的,所述操作請求由Web應用103根據(jù)用戶在瀏覽器中的操作產(chǎn)生。S102、瀏覽器的事件處理部件105根據(jù)Web數(shù)據(jù)庫中完成的操作生成的數(shù)據(jù)庫事件,所述數(shù)據(jù)庫事件被所述Web應用103所監(jiān)聽;優(yōu)選的,所述數(shù)據(jù)庫事件包含事件的類型,如事件的類型為database;S103、在Web應用103監(jiān)聽到有數(shù)據(jù)庫事件生成時,Web應用103從數(shù)據(jù)庫事件的屬性中獲取變化的內容。圖3是基于圖1的計算環(huán)境,對應與本發(fā)明系統(tǒng)的瀏覽器結構圖,其實現(xiàn)的信令流程如圖2所示。具體參閱圖3,瀏覽器201中的Web應用203打開了該應用兩個不同的頁面,瀏覽器第一頁面A和瀏覽器第二頁面B,以下簡稱頁面A和頁面B,其中頁面A和頁面B也被認為是Web應用203的兩個對象,這兩個頁面應該屬于同一個域,例如:同屬于域名為www.huawei.com的域。瀏覽器的多個頁面可以位于同一窗體中的不同標簽頁,也可以在同一瀏覽器的不同窗體中。其中在頁面A中Web應用203向瀏覽器的數(shù)據(jù)庫處理部件204發(fā)送操作請求,數(shù)據(jù)庫處理部件204根據(jù)所述操作請求對Web數(shù)據(jù)庫進行操作;實現(xiàn)過程中Web應用203和數(shù)據(jù)庫處理部件204的通信可以通過JavaScriptAPI實現(xiàn)。瀏覽器的事件處理部件205根據(jù)Web數(shù)據(jù)庫中對應所述操作請求完成的操作生成數(shù)據(jù)庫事件,所述數(shù)據(jù)庫事件被Web應用203所監(jiān)聽。其中,所述數(shù)據(jù)庫事件被Web應用203所監(jiān)聽,具體表現(xiàn)為針對另外一個頁面B,Web應用203為頁面B分配數(shù)據(jù)庫事件監(jiān)聽對象202和數(shù)據(jù)庫事件處理函數(shù)206,所述數(shù)據(jù)庫事件監(jiān)聽對象具體可以是window、document、body或數(shù)據(jù)庫對象中的任意一種;數(shù)據(jù)庫事件監(jiān)聽對象202監(jiān)聽所述數(shù)據(jù)庫事件方法具體為:在瀏覽器的事件處理部件205上注冊監(jiān)聽瀏覽器的數(shù)據(jù)庫事件的信息,則事件處理部件205在生成數(shù)據(jù)庫事件后,能夠根據(jù)數(shù)據(jù)庫事件監(jiān)聽對象202的注冊信息,將所述數(shù)據(jù)庫事件發(fā)送給數(shù)據(jù)庫事件監(jiān)聽對象202。所述Web應用203從所述數(shù)據(jù)庫事件的屬性中獲取數(shù)據(jù)庫的變化的內容;具體表現(xiàn)為:優(yōu)選的可以是數(shù)據(jù)庫事件監(jiān)聽對象202接收到來自事件處理部件205的數(shù)據(jù)庫事件后,將所述數(shù)據(jù)庫事件轉發(fā)給數(shù)據(jù)庫事件處理函數(shù)206;在有較多操作步驟,并需要記錄所述步驟的環(huán)境時,可選的通過事件處理部件205記錄各步驟的數(shù)據(jù),并攜帶在數(shù)據(jù)庫事件中傳遞給數(shù)據(jù)庫事件監(jiān)聽對象202??蛇x的還可以是數(shù)據(jù)庫事件監(jiān)聽對象202接收到來自事件處理部件205的數(shù)據(jù)庫事件后,數(shù)據(jù)庫事件處理函數(shù)206根據(jù)該數(shù)據(jù)庫事件的屬性,通過數(shù)據(jù)庫處理部件204到Web數(shù)據(jù)庫中獲取數(shù)據(jù)庫事件屬性所描述的Web數(shù)據(jù)庫中的內容;其中數(shù)據(jù)庫事件的屬性包括描述所述Web數(shù)據(jù)庫的變更信息,所述變更信息包括根據(jù)所述Web應用的操作請求在數(shù)據(jù)庫已操作的數(shù)據(jù)庫名、表名和變更條目里各元素的標識。其中變更條目里各元素的標識包括:鍵值對應的標識、新的記錄值對應的標識和舊的記錄值對應的標識;其中新的記錄值對應的標識根據(jù)實際的對Web數(shù)據(jù)庫中存儲內容的劃分可以有一個或者多個。該可選的方式適用只需要獲取最后結果,且該結果占用較多資源情況。實現(xiàn)過程中數(shù)據(jù)庫處理部件204和數(shù)據(jù)庫事件處理函數(shù)206之間的通信,數(shù)據(jù)庫事件監(jiān)聽對象202和事件處理部件205之間的通信都可以通過JavaScriptAPI實現(xiàn)。事件處理部件205在數(shù)據(jù)庫操作完成后產(chǎn)生數(shù)據(jù)庫事件,頁面B通過數(shù)據(jù)庫事件處理函數(shù)206中獲取數(shù)據(jù)庫事件的屬性,然后根據(jù)屬性中的數(shù)據(jù)庫變化的內容進行相應處理。實際運用中,頁面A也可以擁有頁面B中具有相同功能的數(shù)據(jù)庫事件監(jiān)聽對象202’(未在圖3中標出)和數(shù)據(jù)庫事件處理函數(shù)206’(未在圖3中標出),從而通過對瀏覽器的事件處理部件205中產(chǎn)生的數(shù)據(jù)庫事件的監(jiān)聽,實現(xiàn)頁面A對頁面B中數(shù)據(jù)庫操作的監(jiān)聽,最終達到頁面A和頁面B相互監(jiān)聽的目的。瀏覽器可以根據(jù)頁面B和頁面A是否在一個瀏覽器中,對于數(shù)據(jù)庫事件屬性的處理的時機做不同的設置,,具體的實現(xiàn)方式可以表現(xiàn)為:1)當頁面A和頁面B在同一個瀏覽器中以不同頁面標簽替換顯示時(即同一時間只能顯示頁面A和頁面B中的一個頁面),可以設置瀏覽器,使得數(shù)據(jù)庫事件處理函數(shù)206在由頁面A切換到頁面B時才進行數(shù)據(jù)庫事件屬性的處理,此時在最大程度上減少數(shù)據(jù)庫事件屬性的處理的頻率基礎上,正常實現(xiàn)頁面B中呈現(xiàn)出的監(jiān)聽結果的目的;2)當頁面A和頁面B在同一個瀏覽器的不同窗體中顯示時,可以設置瀏覽器,使得數(shù)據(jù)庫事件處理函數(shù)206在獲取到數(shù)據(jù)庫事件的屬性后就進行對所述數(shù)據(jù)庫事件的屬性的處理,即在頁面B中更新與頁面A同屬于一個數(shù)據(jù)庫,并且在同一張表中的各變更條目所對應的內容,使得頁面B和頁面A中相同屬性的內容能夠同步變化和更新;這是為了保證在頁面A和頁面B并列顯示時,能夠實頁面B的應用現(xiàn)監(jiān)聽到的內容的實時更新。上述用戶在瀏覽器中的操作(瀏覽器產(chǎn)生Web應用操作請求)過程又可以區(qū)分為:1)在頁面A中輸入完各參數(shù),并需要點擊頁面A中確認按鈕才會完成頁面A中數(shù)據(jù)的操作時,此時就以點擊所述確認按鈕作為發(fā)起Web應用的操作請求的觸發(fā)點;2)在頁面A中某一欄(所述某一欄可以對應變更條目中的某一項)中輸入完參數(shù),并在轉移鼠標焦點到其他欄時,觸發(fā)發(fā)送Web應用的操作請求。具體的實現(xiàn)方式,不局限于上述舉出的2種,還可以是其他有關瀏覽器中的操作來觸發(fā)發(fā)送Web應用的操作請求。具體實施方式中,數(shù)據(jù)庫事件的產(chǎn)生優(yōu)選的可以采用:1)記錄用戶在頁面A中對應某一變更條目的所有Web應用操作,然后觸發(fā)產(chǎn)生數(shù)據(jù)庫事件,其中觸發(fā)方式可以是上述兩種方式中的任一一種;產(chǎn)生數(shù)據(jù)庫事件的過程中,將上述記錄的對應某一變更條目的所有Web應用操作內容都包含在所述數(shù)據(jù)庫事件的屬性中,以便頁面B中的數(shù)據(jù)庫事件監(jiān)聽對象202從所述數(shù)據(jù)庫事件的屬性中獲取到對應該變更條目的所有Web應用操作的操作內容?;蛘?,2)僅記錄用戶在頁面A中最后的操作結果,即完成對數(shù)據(jù)庫的操作后,在數(shù)據(jù)庫中保存的結果。這樣可以直接在生成數(shù)據(jù)庫事件時,攜帶該數(shù)據(jù)庫中保留的完成Web應用操作請求后的結果。Web應用的操作請求中包含了用于生成數(shù)據(jù)庫事件的參數(shù),瀏覽器可以根據(jù)所述參數(shù)確定在Web應用的操作請求完成后是否產(chǎn)生數(shù)據(jù)庫事件。具體實現(xiàn)過程中,還可以是在數(shù)據(jù)庫處理部件204中設置用于生成數(shù)據(jù)庫事件的參數(shù),而不用在Web應用的操作請求中攜帶所述參數(shù),從而實現(xiàn)對某些頁面或者頁面中的某些對象的操作可選的生成數(shù)據(jù)庫事件。舉例說明,執(zhí)行Web應用的操作請求時可以指定“suppressevent”參數(shù),在使用該事件參數(shù)時,則不產(chǎn)生數(shù)據(jù)庫事件。此參數(shù)也可以用來防止死循環(huán),能夠在事件處理函數(shù)中對數(shù)據(jù)庫進行操作時,指定不產(chǎn)生事件。比如監(jiān)聽數(shù)據(jù)庫事件的處理函數(shù)中,在監(jiān)聽到某個記錄更新(update)時,再進行一次數(shù)據(jù)庫update操作,這時可能引起死循環(huán)。此參數(shù)也可以避免產(chǎn)生一些不必要的數(shù)據(jù)庫事件,比如某些無需監(jiān)控的數(shù)據(jù)庫操作,以達到節(jié)約系統(tǒng)資源。另外一種方式,缺省的事務也可以不產(chǎn)生事件,只有指定了“firedatabaseevent”參數(shù)時,才產(chǎn)生數(shù)據(jù)庫事件。這樣有利于節(jié)約系統(tǒng)資源,以及更好的兼容性。有很多Web應用是沒有必要監(jiān)控數(shù)據(jù)庫事件的,因此缺省不產(chǎn)生事件是更佳方案。數(shù)據(jù)庫事件的屬性中包括描述數(shù)據(jù)庫變化的變更信息,變更信息包括所述Web應用的操作請求引起發(fā)生變化的數(shù)據(jù)庫名、表名和變更條目,變更條目信息由所述瀏覽器中的Web應用在數(shù)據(jù)庫事件處理函數(shù)中從事件的屬性中獲取,根據(jù)所述的變更信息Web應用獲取到數(shù)據(jù)庫的變化。圖4示出了本發(fā)明實施方式的數(shù)據(jù)庫事件的內容,包含一些只讀屬性(readonlyattribute)的字符串(DOMString)或字符串數(shù)組(列表DOMStringList)。變更條目的每一項包括數(shù)據(jù)記錄的操作類型(operationType),以及可選的鍵值(key)、舊的記錄值(oldValue)和新的記錄值(newValue),這些屬性可以用數(shù)組形式存放數(shù)據(jù),如屬性鍵值keys為字符串數(shù)組(DOMStringList)。變更條目至少包括以下操作類型中的一種:在操作類型為清空時,對應變更的鍵值、新的記錄值和舊的記錄值都為空;在操作類型為刪除時,對應變更條目的鍵值為已刪除記錄的鍵值,對應變更條目的舊的記錄值為已刪除記錄的記錄值;在操作類型為增加時,對應變更條目的鍵值為已增加記錄的鍵值,對應變更條目的新的記錄值為已增加記錄的記錄值;在操作類型為更新時,對應變更條目的鍵值為已更新記錄的鍵值,對應變更條目的新的記錄值為已更新記錄的新記錄值,對應變更條目的舊的記錄值為已更新記錄的舊記錄值。圖5示出了本發(fā)明實施方式的另一種等價方式所描述的瀏覽器數(shù)據(jù)庫事件的內容,可以運用于圖1和圖3所述的系統(tǒng)。數(shù)據(jù)庫事件對象中可以包含數(shù)據(jù)變化列表DatabaseChangeList對象,該列表對象中具體包含詳細的數(shù)據(jù)記錄的變更條目。本實施例中將一個或者多個Web應用的操作請求的集合稱為數(shù)據(jù)庫事務。如果瀏覽器中的Web應用的數(shù)據(jù)庫操作請求中包括存放(Put)操作,瀏覽器的數(shù)據(jù)庫處理部件根據(jù)該操作中的數(shù)據(jù)庫名、表名和鍵值來檢查數(shù)據(jù)庫中是否已經(jīng)存在有與所述數(shù)據(jù)庫名、表名和鍵值均相同的記錄,如果已經(jīng)存在,則確定將該操作對應所述變更條目的操作類型轉換為更新條目,則瀏覽器的事件處理部件205生成相應的數(shù)據(jù)庫事件的屬性中,相應的鍵值為已更新記錄的鍵值,對應條目的新的記錄值為已更新記錄的新記錄值,對應條目的舊的記錄值為已更新記錄的舊記錄值。;如果數(shù)據(jù)庫中沒有存在有與所述數(shù)據(jù)庫名、表名和鍵值均相同的記錄,則確定將該操作對應所述變更條目的操作類型轉換為增加條目,則瀏覽器的事件處理部件205生成相應的數(shù)據(jù)庫事件的屬性中,相應的鍵值為完成增加記錄的鍵值,對應條目的新的記錄值為完成增加記錄的記錄值。在提供電子表格的Web應用中,經(jīng)常會對同一條記錄進行多次操作,然后在用戶保存或自動保存時才提交數(shù)據(jù)。比如對一條記錄修改了某個字段的值,然后又將此記錄刪除了,則在用戶保存提交數(shù)據(jù)時對應的數(shù)據(jù)庫事務中則包含修改和刪除兩個操作。數(shù)據(jù)庫事件屬性中的變更條目按照對應數(shù)據(jù)庫操作的時間順序排列;如果數(shù)據(jù)庫事務中的最后一次操作是清空操作,即刪除表的全部記錄,則對應的鍵值、新的記錄值和舊的記錄值都為空即可,因此這種情況下如果將全部記錄的鍵值和舊的記錄值都包含在事件中并不合適,數(shù)據(jù)量可能會比較大,而且一般也沒有必要,因此可以僅記錄清空操作之后的相關操作。比如在電子商務Web應用中的購物籃模塊中在添加商品時,同時提供先清空購物籃中已有物品的選項,則這樣對應的數(shù)據(jù)庫事務中包含先進行購物籃的表數(shù)據(jù)的清空操作,然后再增加新的物品記錄。另外一種情況是用戶修改了購物籃中物品的數(shù)量,但是并沒有馬上提交,然后又進行了購物籃的清空操作,并提交,這樣對應的數(shù)據(jù)庫事務中僅包含清空操作。除上述將數(shù)據(jù)庫事件屬性中的變更條目按照對應數(shù)據(jù)庫操作的時間順序排列外,還有一種方式就是一個Web應用的操作請求中對一條記錄進行多于一次的操作,而變更條目中對該記錄只包含最后一次的操作,如:在選擇某件產(chǎn)品購買數(shù)量時,可能會對所要求的數(shù)量進行多次選擇,則對應所述某件產(chǎn)品的變更條目只會保存最后選定的數(shù)量;在Web頁面里的某個編輯框里進行了幾次的輸入以及修改,則對應所述某個編輯框的變更條目只會保存最后修改完的內容。注意,操作對應的事件屬性中舊的記錄值(oldValue)是數(shù)據(jù)庫事務執(zhí)行之前的記錄值,而不是某個數(shù)據(jù)庫操作執(zhí)行前的記錄值,因為一個數(shù)據(jù)庫事務中可能有多個數(shù)據(jù)庫操作,所述數(shù)據(jù)庫事務執(zhí)行之前的記錄值即該數(shù)據(jù)庫事務中第一個數(shù)據(jù)庫操作之前的記錄值。如:在一個數(shù)據(jù)庫事務對某條記錄進行了兩次(update)更新操作,在產(chǎn)生數(shù)據(jù)庫事件屬性時對操作進行了合并處理,即上述的變更條目中對該記錄只包含最后一次的操作,如果使用最后一次更新操作之前的記錄值作為合并后的操作對應的變更條目中的舊的記錄值(oldValue),顯然是不準確的。以電子商務Web應用為例,瀏覽器在一個頁面中顯示購物籃(或購物車)中已經(jīng)選取的物品清單,又打開了本網(wǎng)站的另一個顯示具體商品的網(wǎng)頁,然后點擊了添加到購物籃。這樣,最佳方案是在購物籃頁面自動刷新物品清單,顯示用戶新添加的購物籃。采用本發(fā)明的實施方式可以如下實現(xiàn):購物籃的內容記錄存儲在本地的Web數(shù)據(jù)庫中,商品顯示頁面(對應圖3中的頁面A)將物品增加到購物籃時,即Web應用進行數(shù)據(jù)庫add操作時,產(chǎn)生數(shù)據(jù)庫事件(database)。在購物籃頁面(對應圖3中的頁面B)監(jiān)聽數(shù)據(jù)庫事件(database),然后在事件處理函數(shù)中更新購物籃中的物品清單。Web應用可以直接從database事件中獲取到所增加數(shù)據(jù)條目的新內容值,因此無需訪問數(shù)據(jù)庫,直接就可以在購物籃物品清單中增加新的商品信息,保持頁面A與頁面B的同步。對于瀏覽器來說,其組成元素不僅僅局限于一個Web應用的不同頁面,可能還會涉及到Web應用之間數(shù)據(jù)的變化的獲知,如:兩個相同的Web應用之間的數(shù)據(jù)的變化的獲知或者兩個不同的Web應用之間的數(shù)據(jù)的變化的獲知;這里Web應用可以是瀏覽器的某一個插件,也可以是瀏覽器生成頁面的某個對象,還可以是瀏覽器自身的組成部分。圖6是實現(xiàn)第二Web應用對第一Web應用中變化的數(shù)據(jù)的獲取的信令示意圖,其過程包括:S201、獲取第一Web應用的操作請求,并根據(jù)所述操作請求完成對Web數(shù)據(jù)庫的操作;其中第一Web應用和第二Web應用運行于所述瀏覽器中;S202、根據(jù)Web數(shù)據(jù)庫中完成的操作生成的數(shù)據(jù)庫事件,所述數(shù)據(jù)庫事件被第二Web應用所監(jiān)聽;S203、在監(jiān)聽到有數(shù)據(jù)庫事件生成時,所述第二Web應用從所述數(shù)據(jù)庫事件的屬性中獲取數(shù)據(jù)庫的變化的內容。通過本實施例,實現(xiàn)了第二Web應用對于第一Web應用操作請求完成后所產(chǎn)生的數(shù)據(jù)庫時間的監(jiān)聽,減少了各第一Web應用和第二Web應用的耦合,提高了數(shù)據(jù)操作的獨立性。如圖7所示,描述了本發(fā)明實施方式的一個瀏覽器產(chǎn)生數(shù)據(jù)庫事件的詳細處理步驟,它是圖6所示的方法的具體應用;本實施例中將一個或者多個Web應用的操作請求的集合稱為數(shù)據(jù)庫事務。步驟S301,瀏覽器獲取第一Web應用的操作請求,并根據(jù)所述操作請求生成Web數(shù)據(jù)庫的事務,完成Web數(shù)據(jù)庫事務中對Web數(shù)據(jù)庫的各個操作;步驟S302,判斷對Web數(shù)據(jù)庫的事務是否成功完成,如果失敗則執(zhí)行步驟S309,進行Web數(shù)據(jù)庫的事務的回滾;如果成功,則執(zhí)行步驟S303;步驟S303,分析數(shù)據(jù)庫事務中的數(shù)據(jù)庫事件參數(shù);步驟S304,判斷是否需要生成數(shù)據(jù)庫事件,如果是則執(zhí)行步驟S305,否則執(zhí)行步驟S308;步驟S305,根據(jù)Web數(shù)據(jù)庫中完成的操作生成的數(shù)據(jù)庫事件的屬性;步驟S306,生成數(shù)據(jù)庫事件;步驟S307,第二Web應用監(jiān)聽到所述數(shù)據(jù)庫事件生成,則從所述數(shù)據(jù)庫事件的屬性中獲取數(shù)據(jù)庫的相關內容。步驟S308,壓制數(shù)據(jù)庫事件,即不產(chǎn)生數(shù)據(jù)庫事件。瀏覽器對數(shù)據(jù)庫事務中的操作內容進行分析,生成相應數(shù)據(jù)庫事件的屬性,一個數(shù)據(jù)庫事務中可能包含了多種數(shù)據(jù)庫操作,甚至可以對同一條記錄進行了多次操作,可以進行合并處理,簡化產(chǎn)生的數(shù)據(jù)庫事件的屬性內容,同時又準確對應數(shù)據(jù)庫的變化。如圖8所示,本發(fā)明的實施方式在上述步驟S305中又包含以下子步驟:步驟S401,分析Web數(shù)據(jù)庫中完成的操作內容;步驟S402,判斷所述操作內容是否包含清除操作;如果不包含則執(zhí)行步驟S404,分析全部數(shù)據(jù)庫操作;如果包含,則執(zhí)行步驟S403,對于執(zhí)行過清除操作的數(shù)據(jù)庫、表或者條目,只分析對應所述數(shù)據(jù)庫、表或者條目最后一次清除操作之后的數(shù)據(jù)庫操作,而舍棄清除操作之前的數(shù)據(jù)庫操作的分析;步驟S405,合并操作;其中對進行了多于一次操作的記錄只分析該記錄最后一次的操作;步驟S406,對合并后的操作逐一分析,如果操作類型是清空時,則執(zhí)行步驟S407,對應變更條目的鍵值、新的記錄值和舊的記錄值都置為空;如果操作類型為刪除時,則執(zhí)行步驟S408,對應變更條目的鍵值置為完成刪除記錄的鍵值,對應條目的舊的記錄值置為完成刪除記錄的記錄值;如果操作類型為增加時,則執(zhí)行步驟S409,對應變更條目的鍵值置為完成增加記錄的鍵值,對應條目的新的記錄值置為完成增加記錄的記錄值;如果操作類型為更新時,則執(zhí)行步驟S410,對應變更條目的鍵值置為完成更新記錄的鍵值,對應條目的新的記錄值置為完成更新記錄的新記錄值,對應條目的舊的記錄值置為完成更新記錄的舊記錄值;如果還有未分析的操作,則瀏覽器繼續(xù)執(zhí)行步驟S406,否則執(zhí)行步驟S411,生成數(shù)據(jù)庫事件的屬性,包含以上得出的變更條目。本實施例通過增加清除操作的判斷和處理,精簡了數(shù)據(jù)庫的操作的記錄;并通過數(shù)據(jù)庫操作的記錄的合并處理,得到了最后的數(shù)據(jù)庫操作,以便準確的生成數(shù)據(jù)庫事件屬性。優(yōu)選的,步驟S305還可是僅記錄描述所述Web數(shù)據(jù)庫的變更信息,所述變更信息包括根據(jù)所述Web應用的操作請求在數(shù)據(jù)庫已操作的數(shù)據(jù)庫名、表名和變更條目里各元素的名稱;其中變更條目里各元素的標識包括:鍵值對應的標識、新的記錄值對應的標識和舊的記錄值對應的標識;如圖4中的舊的記錄值對應的標識為oldValues,而舊的記錄值為oldValues實際的值。則步驟S307執(zhí)行以下操作:第二Web應用到Web數(shù)據(jù)庫中進行對應與數(shù)據(jù)庫事件的屬性的內容操作,所述操作可以是簡單的獲取Web數(shù)據(jù)庫中對應所述數(shù)據(jù)庫事件的屬性的內容。對于同一瀏覽器中兩個應用之間的數(shù)據(jù)庫事件的監(jiān)聽與同一應用的兩個頁面間完成監(jiān)聽,兩種方式除傳輸上有所差異外,具體為在時間處理部件中注冊的對象不同,其他內容都可以按照同一模式套用,因此,這里不再贅述。本發(fā)明的實施方式可以在計算機可讀存儲介質存儲有指令,當該指令由計算機執(zhí)行時,計算機執(zhí)行上述使Web應用獲取數(shù)據(jù)庫變化的方法。以上所述僅為本發(fā)明的實施方式,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發(fā)明的專利保護范圍內。