我试图将一些javascript函数调用在一个html页面中运行android webview.很简单,什么代码尝试下面的事情-从Android应用程序,调用一个javascript带有测试消息,它依次调用Java函数回,在Android应用程序,通过敬酒显示测试消息功能.
该javascript功能如下:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
Run Code Online (Sandbox Code Playgroud)
从WebView,我试着javascript通过以下方式调用,没有运气:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Run Code Online (Sandbox Code Playgroud)
我确实启用javascript了WebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
Run Code Online (Sandbox Code Playgroud)
并且继承了Java班级
public class JSInterface{
private WebView mAppView;
public JSInterface (WebView appView) {
this.mAppView = appView;
}
public void doEchoTest(String echo){
Toast toast = Toast.makeText(mAppView.getContext(), echo, Toast.LENGTH_SHORT);
toast.show();
}
}
Run Code Online (Sandbox Code Playgroud)
我花了很多时间在谷歌上搜索我可能做错了什么.我发现的所有例子都使用这种方法.有没有人在这里看错了? …
在我的应用程序中,我正在使用WebView,并且我正在使用JavaScript alert( )方法但它不起作用,没有弹出窗口出现.
在我的清单文件中,我添加了
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Run Code Online (Sandbox Code Playgroud)
在我添加的活动文件中
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/demo.html");
Run Code Online (Sandbox Code Playgroud)
在我添加的布局xml文件中
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
Run Code Online (Sandbox Code Playgroud)
任何线索如何启用全JavaScript中WebView?
更新
谢谢标记文件中
的alert()方法html现在正在工作:).
现在有两个问题WebView:
1:我<textarea>在我正在加载的html文件中使用a WebView,并尝试用其中的印地语语言编写,但当我尝试编写印地文文本时,它显示为符号(矩形符号,如[]).
当我在桌面上的firefox浏览器中做同样的事情它工作正常.任何线索如何给多语言支持textarea的WebView?
2:当我点击提交并尝试alert()在另一个java脚本中打开方法中的文本值时,它不起作用,是否意味着即使使用WebChromeClient
其仅适用于当前加载的html页面而未javascripts从该页面调用?
我有一个webview android应用程序,它打开一个包含一些HTML5/JavaScript代码的网页.我想将一些值从我的应用程序的android端传递到浏览器端.所以我想从Android写入HTML5 localstorage,然后网页的Javascript部分读取localstorage中的值.
Android webview如何写入HTML5 localstorage?
或者是否有一种方式Android可以将一些值传递给它加载的页面的javascript?(无需重新加载整个页面)说在HTML5 localstorage上写一些内容然后javascript代码从HTML5 localstorage中读取该内容
它与如何将json格式的数据从webview传递到html页面不同.我需要一种通过android写入HTML5 localstorage的方法
我无法从 Android 内部调用基本的 JavaScript 函数。当我从本教程克隆存储库,然后将其剥离时,我能够使代码正常运行。但是,在尝试创建自己的新项目时,我没有成功。
我参考了以下帖子,似乎也在做同样的事情,但无济于事。这些方法之间没有明显的不同,所以我觉得这些文件之外可能存在我遗漏的依赖项?
Android 在 WebView 中调用 JavaScript 函数
我想知道我是否在某处遗漏了一些微妙的东西。
基本上,我只是想通过调用在其自己的文件中定义的 JavaScript 函数来获取任何输出到控制台。项目结构如下:
main
- assets
- index.html
- sketch.js
- java
- com.mypackage
- MainActivity.java
Run Code Online (Sandbox Code Playgroud)
我有一个sketch.js包含以下功能的文件
function hello() {
console.log("hello world");
}
Run Code Online (Sandbox Code Playgroud)
和一个index.html包含以下代码的文件
<!DOCTYPE html>
<html>
<head>
<script src="sketch.js" type="text/javascript"></script>
</head>
<body>
<canvas></canvas>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后从我的活动类中,我有以下 Java 代码
webView = (WebView) findViewById(R.id.webView);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/index.html");
webView.evaluateJavascript("javascript:hello();", null);
webView.evaluateJavascript("console.log('Hello world 2');", null);
Run Code Online (Sandbox Code Playgroud)
在 Android Studio …