gpt4 book ai didi

javascript - 从 android Activity 调用 javascript 函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:11 26 4
gpt4 key购买 nike

我在主要 Activity 中使用以下代码,它给出的函数 display() 未定义

public class cordovaExample extends DroidGap {
Context mcontext;
private novel n;
private Server s;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new Thread(new Server(this)).start();
try {
Thread.sleep(500);
} catch (InterruptedException e) { }
new Thread(new Client()).start();

super.init();

n = new novel(this, appView);
s = new Server(this,appView);

appView.getSettings().setJavaScriptEnabled(true);
appView.addJavascriptInterface(n, "novel");
appView.addJavascriptInterface(s, "Server");

super.loadUrl("file:///android_asset/www/index.html");
super.loadUrl("javascript:display()");
}
}

在最后一行给出错误 display() is not defined

function display() {
alert("abc");
}

上面的代码显示了我在 html 文件中使用的显示功能

我们将不胜感激任何类型的帮助

最佳答案

让 Cordova 在页面加载时加载 JavaScript 是个坏主意。这应该由您的本地 JavaScript 处理。尝试在 HTML 页面本身中像这样调用 display() 函数:

<script>
function display()
{


alert("abc");


}

window.onload = function() {
display();
}
</script>

如果您以后需要在 Cordova 中调用 JavaScript,可以这样做:

sendJavascript("display();");

要从其他类访问此方法,您需要访问您的主要 Activity 。简单但可能不安全的方法是在主 Activity 中创建一个静态变量来保存 Activity 本身。示例:

public class MyActivity extends DroidGap {
public static MyActivity activity;

public void onCreate(Bundle savedInstanceState) {
activity = this;
}
}

然后,在类里面的任何位置,执行:

MyActivity.activity.sendJavascript('display();');

关于javascript - 从 android Activity 调用 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12514039/

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