目前Browser的編程接口有兩個:一個是Java script,一個是W3C規定的DOM接口。前者是Browser親生的,因為Java Script解釋器和瀏覽器的渲染引擎緊密結合在一起,效率高,效果好。而且從商業角度考慮,大多數頁面離不開java script,如果對其支持的不好,就會直接影響到Browser的市場前景。后者呢,是W3C制定的標準接口,是Browser抱養的。因此,它的實現相對來說并不理想,使用的人也不是很多。從業務角度考慮,一個瀏覽器即使不支持它也不會受到太大的市場壓力。因此它的質量也可想而知的。另外,W3C目前只規定了HTML的DOM接口,對于Browser的新特性,比如對SVG的支持,對<canvas>標記的支持都辦不到。
但是對于希望把瀏覽器作為應用的一個潛入式組件的開發者而言,DOM接口現狀實在是一種噩夢。
這里,我想到這樣一種解決方案:現在很多java script都在做js-java的橋接,我想能不能反其道而行之,做java-js的adaptor?我的思路是:把JAVA里DOM多數操作的實現給替換掉,不是讓它們真的去操縱瀏覽器DOM樹,而是僅僅生成一段JAVA SCRIPT代碼,當遇到set**之類的方法時,通過某種途徑執行這些java script代碼。這里有兩個難點:
一是如何得到并操縱瀏覽器的JS引擎。對于IE,找不到好的辦法;但是對于Firefox/XULRUNNER,我想是可以的,通過裝入插件,可以把JS引擎給暴露出來。
二是如何生成JAVA SCRIPT代碼。這就需要一些編譯的功利了。但是我想既然有那么多閑人有空能去把Swing放到Web容器里;把Eclipse架到Swing上;這個工作肯定也不是什么難事。
好處是什么?可以讓java程序對瀏覽器更好的進行操控。
附一個例子:
是用DOM實現的
http://zhmster.googlepages.com/Dsearch0825_Sample.rar