gpt4 book ai didi

jquery - 从 Java 调用 Android 的 WebView 中的 jQuery 函数?

转载 作者:行者123 更新时间:2023-11-29 02:08:02 25 4
gpt4 key购买 nike

我正在尝试调用在 html 中定义的 javascript 函数喜欢

WebView.loadUrl("javascript:hoge()");

我可以调用非 jQuery 函数,但我不能调用我在“$(document).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>

有没有办法像普通的 javascript 函数一样从 Java 调用 hoge() ?

我发现即使函数不在“$(document).ready(function(){})(jQuery);”中,我也可以使用 jQuery Selector,但我也发现通过该解决方法,我可以“不要使用额外的 jQuery 库。

下面是实际代码。

https://github.com/YoshimuraSei/AndrOutliner/tree/master/Outliner

这是html文件 https://github.com/YoshimuraSei/AndrOutliner/blob/master/Outliner/assets/www/treeview.html

这是我试图调用 javascript 函数的 java 代码。 https://github.com/YoshimuraSei/AndrOutliner/blob/master/Outliner/src/com/yslibrary/android/outliner/TreeViewFragment.java

在第 100 行,我正在尝试调用 javascript 函数'test1()'(请参阅 html 文件的第 34 行),并且可以调用它,因为当前它不在 '$(document).ready(function() {})(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

'mouse' 和 'sortable' 是 jquery.ui 的属性,应该在加载这两个文件之前加载它们,所以我假设加载顺序有点奇怪。有什么想法吗?

最佳答案

我目前是一名 JavaScript 工程师。从这次经历中,现在我可以看出哪里出了问题。这是一个范围和时间相关的问题。
$(document).ready(function(){}); 中的函数不能从外部调用,因为它们不是全局的。如果你想从外面调用他们,你必须让它成为全局性的。而且你必须等到 javascript 完全加载并准备好使用。

$(document).ready(function(){
// make it global function
window.foo = function(){
//do something.
}

// call java method that notifies java that js is ready to use.
// (you should implement JavascriptInterface class & method)
window.JsInterface.jsReady();
})(jQuery);
  1. 您必须向全局公开函数。
  2. 您必须等到 javascript 准备就绪。

关于jquery - 从 Java 调用 Android 的 WebView 中的 jQuery 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8893964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com