【问题标题】:How to call a javascript function from android fragment?如何从android片段调用javascript函数?
【发布时间】:2017-04-17 16:02:16
【问题描述】:

我在片段中有一个 webview,并且有自己的 Bridgecallback 服务。

我有一个 javascript 文件 TriggerEventsService.js

define(function(require){

    var Service = require('BridgeService');
    var TriggerEventsService = new Service({
        name: "TriggerEventsService",
        timeout : 3000
    });

    //Public API
    TriggerEventsService.postHibernate = function(){
        this.execute("postHibernate", {"event" : "App becoming inactive"}, function(){}, function(){});
    };

在我的 HTML 文件中 index.html

  function postEventHibernate(){
            require(['TriggerEventsService'], function(ui){
                ui.postHibernate();
            });
        }

我可以直接从原生android方法调用这个函数吗?

iOS 中我已经这样做了:

    NSString *jsString = [NSString stringWithFormat:@"require(['TriggerEventsService'],
 function(ui){ui.postHibernate();});"];
             [self.webView evaluateJavaScript:jsString completionHandler:nil];

并且效果很好!我知道在 iOS 中可以做到这一点,如果 android 有任何直接的方法,任何人都可以帮助我?

我看过其他答案,但不知道如何调用我的 TriggerEventsService.js - webview.loadUrl("我应该在这里调用什么?");

【问题讨论】:

标签: javascript android ios webview requirejs


【解决方案1】:

我已经看到其他答案,但不知道如何调用我的 TriggerEventsService.js - webview.loadUrl("我应该在这里调用什么?");

假设 postEventHibernate() 是一个全局 JavaScript 函数,这将是:

webview.loadUrl("javascript:postEventHibernate();");

FWIW,这在my book 中有介绍,尽管大部分特定材料在the preview edition of my advanced WebView chapter 中。

【讨论】:

  • 啊,我正在尝试webview.loadUrl("javascript:postEventHibernate()");,距离 8 小时仅半列!!多谢 ! 解决者:- webView.setWebViewClient(new WebViewClient(){ public void onPageFinished(WebView view, String url){ webView.loadUrl("javascript:postEventHibernate();"); } });
猜你喜欢
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-25
相关资源
最近更新 更多