簡體   English   中英

窗口,文檔與$ wnd,$ doc

[英]Window, Document vs. $wnd, $doc

我知道以下是GWT中的某種相同內容:

Window and $wnd
Document and $doc

除了第一個用於Java而第二個用於JSNI(JavaScript)之外,是否有任何差異?

Window是一個類很多靜態方法,您可以使用它來獲取或設置瀏覽器窗口的某些屬性,但實際上它不是本機瀏覽器窗口對象。 這些方法實現最終是JSNI塊,它使用$wnd變量來設置/獲取這些屬性。 Window.alert()一樣,它的實現是$wnd.alert() 請注意, Window.java無法訪問瀏覽器窗口對象中的所有內容,如window.console等。

GWT使用$wnd而不是window因為編譯代碼通常在iframe中執行,在此上下文中, window將引用iframe窗口,而$wnd將引用父窗口。 $doc ,它是iframe到父文檔的引用。

另一方面Document是一個擴展JavaScriptObject的java類,它意味着它是一個Overlay類型,它基本上意味着它是一個原生javascript對象的特殊包裝器,它不修改底層JavaScript但添加了一組java方法與它互動。 傳遞給jsni時可以安全地施放。

總之,盡管Document$doc在java世界中並不相同,但在編譯時它們將是相同的,否則Window不是$wnd的疊加,它只是一種訪問瀏覽器窗口的某些方法的方法。

雖然GWT編譯代碼委托給本機js對象和方法,但不要試圖找到js和java對象之間的相似之處。 GWT設計了一個API來使用一組java對象,小部件,模式等來開發ajax應用程序。一些對象和方法以相同的方式命名,但幾乎API都不同。 但是,其他項目將java編譯為javascript,它們在ST-JS和GWT這兩個世界之間具有嚴格的並行性,提供了一個名為Elemental的實驗庫,其API幾乎與javascript相同(它僅適用於Chrome)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM