如何从android片段调用javascript函数?

时间:2017-04-17 16:02:16

标签: javascript android ios webview requirejs

我在片段中有一个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 (“我应该打电话到什么地方?”);

1 个答案:

答案 0 :(得分:1)

  

我见过其他答案,但不知道如何调用我的TriggerEventsService.js - webview.loadUrl(“我应该打电话到什么地方?”);

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

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

FWIW,my book涵盖了这一点,但大部分此类具体资料都在the preview edition of my advanced WebView chapter中。