【问题标题】:How to call javascript functions from blackberry native?如何从黑莓本机调用javascript函数?
【发布时间】:2012-07-25 12:00:35
【问题描述】:

我正在开发一个应用程序,我需要在其中调用一些从黑莓本机到 javascript 的方法。

当我点击后退键事件时,我想触发 onBackKeyDown() 方法,该方法在 javascript 中声明。

Main.java

protected boolean keyDown(int keycode, int time) {
    // TODO Auto-generated method stub

    if(Keypad.key(keycode) == Keypad.KEY_ESCAPE)
    {
           // onBackKeyDown(); 
         // i want to call the following method which is declared in main.js file 
        Dialog.alert("this is back button");        
        return true;

    }
    return super.keyDown(keycode, time);
}

main.js

 function onBackKeyDown() {
   try {
       if ($.mobile.activePage.is("#Page1")) {
         $.mobile.changePage("#page5");
        } else if ($.mobile.activePage.is("#page2")) {
           $.mobile.changePage("#main");
       } else if ($.mobile.activePage.is("#page3")) {
           $.mobile.changePage("#main");
       } else if ($.mobile.activePage.is("#main")) {
           navigator.app.exitApp();
       }
} catch(e) {
    alert("Exception:ConsoleLog.log:" + e);
}

}

我知道通过使用 "extendScriptEngine" ,在 javascript 中声明的方法会在本机中调​​用。但是在这里如何根据我上面的代码调用本机的javascript方法......谁能帮我解决这个问题......

【问题讨论】:

    标签: blackberry blackberry-jde scriptengine javascript-engine


    【解决方案1】:

    您没有显示此代码,但我必须假设您的应用有一些 Screen,其中包含某种浏览器字段,用于显示 HTML 内容。

    如果您的应用只需要支持 OS 5.0 及更高版本,我无法在没有看到该代码的情况下肯定地告诉您,但我建议您使用 net.rim.device.api.browser.field2.BrowserField(浏览器字段 2)。

    如果您必须支持低于 OS 5.0,I'm not sure how to do that

    无论如何,有了这个 5.0+ BrowserField,你可以这样做:

    BrowserFieldConfig config = new BrowserFieldConfig();
    config.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE);  // should be the default
    
    // Browser basic initialization
    BrowserField _browserField = new BrowserField(config);
    

    然后

    protected boolean keyDown(int keycode, int time)
    {
        if(Keypad.key(keycode) == Keypad.KEY_ESCAPE)
        {
            // i want to call the following method which is declared in main.js file 
            _browserField.executeScript("onBackKeyDown()");
            Dialog.alert("this is back button");        
            return true;
    
        }
        return super.keyDown(keycode, time);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多