2012-04-07 63 views
0

我想從我的GWT下面 Java調用我的JavaScript的方法是我在做什麼GWT:不能調用JavaScript方法,它是在mymain.html類從我onmoduleload

public void onModuleLoad() { 
    jsniAlert("test"); 
} 

private static final native void jsniAlert(String test) /*-{ 
    $wnd.alert(test); 
    $wnd.testJavascript(); 
}-*/; 

HelloJSNI html的

<script type="text/javascript" language="javascript" 
    src="hellojsni/hellojsni.nocache.js"></script> 

<script type="text/javascript"> 
    function testJavascript(var input) { 
     window.jsniAlert(); 
     var var1inJS = "Default value"; 

     alert("Value of Var1 = " + var1inJS); 
     var1inJS = input; 
     alert("Value of Var1 = " + var1inJS); 

     var var2inJS = "Waht is the value of Var2"; 

     alert("Value of Var2 = " + var2inJS); 
    } 

但是當我運行我的應用程序有一個例外(使用打開我的戰爭文件夾應用程序的主HTML類)

javascriptexception:object doesn't support property or method 'testjavascript' 
+0

這是同樣的問題http://stackoverflow.com/questions/10050909/how-can-i-access-some-javascript-file-from-java-in-gwt/ – 2012-04-09 10:58:24

回答

1

您的testJavascript函數中有錯誤,因此它沒有被加載,也無法調用它。

更改此:

function testJavascript(var input) { 

這個

function testJavascript(input) { //notice that var keyword is not used to define parameters 
+0

將其從var輸入更改爲輸入,但得到相同的錯誤,任何建議,謝謝 – user1226162 2012-04-09 10:44:06

+0

你很可能會得到一個不同的錯誤' 對象[對象DOMWindow]沒有方法jsniAlert'。這是正常的,因爲代碼中沒有JavaScript函數jsniAlert,並且您正在從'testJavascript'函數 – jusio 2012-04-09 10:58:38

0

沒有加載你的JavaScript功能。 在瀏覽器中,當瀏覽器在腳本標記之間的代碼中發現錯誤時,內部代碼將不會被加載,並且可能導致意外的結果。

+0

調用它,所以任何解決方案u建議 – user1226162 2012-04-09 10:44:40

+0

您在這裏遇到很大麻煩的人:您從函數A調用函數B ,那麼這個函數B回調函數A,這將是一個調用函數的死循環!刪除window.jsniAlert(); from your testJavascript – GingerHead 2012-04-09 11:40:52

+0

謝謝,刪除jsniAlert,實際上我刪除了方法中的所有內容,它什麼都不會做,但它不應該給我任何異常。 – user1226162 2012-04-09 14:23:01