2013-10-18 48 views
1

正如書名,我需要在JFX的WebView的jQuery。我可以迄今包括從資源文件夾中的CSS樣式表,順便說一下我的應用程序是如火如荼,但是從JavaFX的更好的CSS支持使用的WebView,因爲在JTextPane中搖擺不支持多CSS。如何在javafx webview中包含jquery?

回答

3

我不喜歡這個主意Stephen Katulka's答案,如果斯蒂芬的方法也適用於你,可能是一個更好的答案。


更新:我剛剛看了一下在shankar's answer鏈接和代碼有一樣包含在這個答案示例代碼。


我使用下面的函數來利用的jQuery在web視圖:

函數從該sample gist發起對jQuery注入加載到web視圖的文檔。

注意函數需要文件執行腳本注入的jQuery之前被加載到web視圖。您可以確保文件已被添加監聽到WebEngine的文檔屬性,只有觸發一旦文檔已被設置爲注入jQuery的功能加載。


您還可以直接在加載的html中包含jQuery引用,而不是注入它們。直接包含技術的一個示例是在JavaFX WebView屏幕中顯示jQuery DatePicker的示例。

+0

您好[@jewelsea](http://stackoverflow.com/users/1155209/jewelsea)。我一直令人頭我的頭[這個問題,我發佈了一些時間回:如何添加JQuery的到了JavaFx的WebView(http://stackoverflow.com/questions/22947543/how-to-add-jquery-onto-javafx- webview),但一直未能在我的特定情況下在線實施其他資源。你能否看看它,看看你能否以任何方式幫助我。除此之外,這是我的項目中非常重要的一部分。如果可以的話,我將不勝感激。謝謝。 – ILikeProgramming

1

只需加載腳本從你的資源字符串,然後打電話給你的WebEngine的executeScript()命令來運行它:

WebView browser; 
StringBuilder jQueryContents = new StringBuilder; 
     // load this string with your jQuery file contents 

BufferedReader reader = new BufferedReader(new InputStreamReader(
     App.class.getResourceAsStream("/jquery.min.js"))); 

String line = reader.readLine(); 

while (line != null){ 
    jQueryContents.append(line); 
    line = reader.readLine(); 
} 

JSObject jQuery = null; 
try{ 
    jQuery = (JSObject) browser.getEngine().executeScript("$"); 
}catch (JSException jse){} 

if (jQuery == null){ // Don't load jQuery if there already is one, or you 
        // will destroy any $(document).ready() handlers that 
        // were declared previously 
    browser.getEngine().executeScript(jQueryContents.toString()); 
}  

然後你的發動機已經裝載jQuery的。如果你的應用是在互聯網上,這是好多了,從谷歌jQuery的加載,因爲這意味着如果它是已經裝載的前一個頁面上,它沒有再次加載它。如果您的應用程序是內聯網或封閉的沙箱,則您不必擔心這些事情。

0

JavaFX的不支持JQuery的是,如果您已啓用JavaScript只是不工作的事情是因爲主題輥JRE因爲某些原因無法讀取CSS-UI控制器的jQuery Mobile的。記住JQuery仍然是JavaScript。

我跟你的想法看,唯一的問題是,JQuery的需要CDN的事實。所以,如果你包括你的JQuery到HTML文檔的話一定要包括JQuery的CDN,那麼你可以使用load方法並鏈接到您的HTML文件。