我想打電話給它在HTML 定義如下從Java的Android WebView中調用jQuery函數?
WebView.loadUrl("javascript:hoge()");
我可以叫非jQuery函數javascript函數,但我不能把我的「$(文件)中定義的功能。 ready(function(){})(jQuery);',就像下面這樣。
<script>
//I can call this function by webview.loadUrl("javascript:something()");
function something(){
//do something
}
$(document).ready(function(){
//but I can't call this function by webview.loadUrl("javascript:hoge()");
function hoge(){
//do something.
}
})(jQuery);
</script>
有沒有辦法從Java調用hoge()像普通的javascript函數?
我發現我可以使用jQuery Selector,即使函數不在'$(document).ready(function(){})(jQuery);'中,但我也發現使用該解決方法,我可以不使用額外的jQuery庫。
belllow是實際代碼。
https://github.com/YoshimuraSei/AndrOutliner/tree/master/Outliner
,這是HTML文件 https://github.com/YoshimuraSei/AndrOutliner/blob/master/Outliner/assets/www/treeview.html
,這是我想調用JavaScript函數的Java代碼。我試圖調用JavaScript function'test1()'(見html34文件的第34行),它可以被調用,因爲它目前不在'$(document).ready()函數(){})(jQuery);',但我不能從test1()中調用額外的jQuery庫方法'nestedSortable()'。
我該如何解決這個問題?
編輯:
或者這只是加載jQuery庫和插件的時機?
加載html到webview後,我得到了這些錯誤。
Uncaught TypeError: Cannot read property 'mouse' of undefined--From line 7 of file:///android_asset/www/js/jquery.ui.mouse.touch.js
Uncaught TypeError: Cannot read property 'sortable' of undefined--From line 15 of file:///android_asset/www/js/jquery.ui.nestedSortable.js
「老鼠」和「排序」是jquery.ui,裝載這2個文件前應加載的屬性,所以我認爲加載順序是有點怪。 有什麼想法?
謝謝你的回答。你的意思是,每當我想使用方法時,我必須重新加載html,對吧? – yshrsmz 2012-01-18 04:15:29
問題解決了。問題是一個錯字。並感謝您有關Android的JavaScript界面的信息。我找到了將JavaScript函數返回值傳遞給Java代碼的方法。 – yshrsmz 2012-01-19 08:30:55