javascript - 如何在 Android 中编写 JavaScript 应用程序

标签 javascript android webview

我有一个 Mozilla Firefox 的 Javascript 代码,当不同网站有特殊条件时,它会在不同网站中插入链接。 我正在考虑开发一个应用程序来在我的 Android 手机上实现同样的功能。 我已经做了一个加载 URL 的应用程序,我可以在 webView 中看到这个网站。 现在,我想插入我的 JavaScript 代码,目的是做同样的事情,但我不知道如何去做。

    public void onCreate(Bundle InstanceState)
     {
    super.onCreate(InstanceState);
    setContentView(R.layout.main);

    webBrowser = (WebView) findViewById(R.id.webkit);
    webBrowser.getSettings().setJavaScriptEnabled(true);
    webBrowser.loadUrl("http://www.onekin.org");
         }

我已经看到我应该使用这个功能,但一直无法让它工作

addJavascriptInterface(Object 对象,字符串名称)

有人知道我该怎么做吗? 谢谢

最佳答案

您可以尝试使用自己的WebViewClient:

定义您的链接

private String link = "http://yourlink.html";

将您的代码调整为:

webBrowser.getSettings().setJavaScriptEnabled(true);
webBrowser.setWebViewClient(new TestWebViewClient());
webBrowser.loadUrl("http://www.onekin.org");
// Interface to inject your javascript
webBrowser.addJavascriptInterface(new JavaScriptInterface(), "MYJSINTERFACE");

界面看起来像:

class JavaScriptInterface {
    public void inject(String html) {
        // Here you will get the Javascript executed
    }
}

客户端注入(inject) JS 的位置:

private class TestWebViewClient extends WebViewClient {

    @Override  
    public void onPageFinished(WebView view, String url) {
        String javascript = "javascript:window.MYJSINTERFACE.inject(document.getElementById('yourlink').href = "+link+");";

        // Inject Javascript in the URL already loaded
        webBrowser.loadUrl(javascript);
    }
}

关于javascript - 如何在 Android 中编写 JavaScript 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17316945/

相关文章:

javascript - Onclick 对同一类执行多个 href 操作

javascript - 滚动时修复顶部具有特定类的表行

android - 如何在android setOnTouchListener android中获取列表项位置?

android - 自定义动画不适用于 SingleInstance Activity

android - 在 Android 中使用 loadDataWithBaseURL() 显示图像时出现问题

javascript - 如何使用带有变量的 RegEx 进行替换

javascript - 无法在 JavaScript 中使用范围之外的匿名函数中的变量

android - 在 View 下方显示 toast 小部件

cordova - 为什么 Android WebView 在未卸载时发送 'beforeunload' 事件?

java - Android WebView 将它拉到多个 html 页面,这些页面根据用户滑动而改变