2013-09-29 14 views
7

Eksperymentuję z formantem JavaFX WebView i chcę użyć biblioteki JavaScript MathJax do renderowania treści matematycznych.JavaFX WebView załadować lokalny plik JavaScript

Jako test Stworzyłem podstawowy projekt JavaFX FXML, dodał WebView do FXML i uaktualniony kod kontroler tak:

public class SampleController implements Initializable { 

    @FXML 
    private WebView webView; 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 
     webView.getEngine().load(
      "file:///Users/benjamin/Desktop/Page.html"); 
    } 
} 

pliku HTML wygląda następująco:

<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

     <script type="text/x-mathjax-config"> 
      MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}}); 
     </script> 
     <script type="text/javascript" 
       src="/Users/benjamin/Downloads/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> 
     </script> 
    </head> 
    <body> 
     When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are 
     $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$ 
    </body> 
</html> 

Działa to zgodnie z oczekiwaniami i daje następujący wynik:

enter image description here

Należy zauważyć, że zarówno w teście, jak i ścieżce pliku HTML i HTML są one zakodowane na twardym dysku, więc następnym krokiem jest spakowanie html jako zasobu dołączonego do aplikacji, tak aby nie szukał pliki lokalne.

Zaktualizowałem kod kontrolera, aby wyszukać stronę w ten sposób (html nie został zmieniony).

@Override 
public void initialize(URL url, ResourceBundle rb) { 
    webView.getEngine().load(
     this.getClass().getResource("Page.html").toExternalForm()); 
} 

ale to daje następujące wyniki:

enter image description here

Jak widać, treść matematyczny nie jest już wydane.

Jeśli zmienię znacznik html <script>, aby odwoływał się do JavaScript z CDN, wszystko działa tak, jak w oryginalnym przykładzie, ale chciałbym móc odwołać się do lokalnego pliku JavaScript (i ewentualnie wersji dołączonej do podanie).

Czy staram się osiągnąć to, co możliwe?

Odpowiedz

7

dodać MathJax.js plik do tego samego pakietu/folder page.html następnie odwoływać się do niego jako

<script type="text/javascript" 
     src="MathJax.js?config=TeX-AMS-MML_HTMLorMML"> 
</script> 
Powiązane problemy