如何从WebView中引用Titanium JavaScript?

时间:2013-03-29 20:49:08

标签: titanium

我有一个大型HTML5应用程序,我正在使用Titanium为其添加本机支持。对我来说最简单的问候世界是:

var webview = Titanium.UI.createWebView({url:'http://myApp.com'});
var window = Titanium.UI.createWindow();
window.add(webview);
window.open();

但是,如果我尝试在现有代码中使用Titanium API,则它没有引用。是否有配置文件选项可以使我的Web应用程序使用Titanium API?

我刚在docs中找到了这个:

Scripts downloaded from remote web servers cannot access the Titanium namespace, 
however, you can use the web view evalJS method to execute a JavaScript 
expression inside the web view, and retrieve the value of an expression.

除了轮询webview的上下文之外,有没有办法让上下文访问Titanium API?

3 个答案:

答案 0 :(得分:1)

节省一些时间并使用phonegap,你正在做的事情不是Appcelerator的最佳做法

答案 1 :(得分:1)

我同意Aaron的说法,PhoneGap听起来对你正在做的事情听起来更好。但是,如果您仍想在Titanium中执行此操作.....

简短的回答是您必须从webview运行Ti.App.fireEvent(),这将允许您从Titanium javascript文件运行函数调用。从Titanium javascript文件中,您将使用Ti.App.addEventListener添加事件侦听器。

有关更详细的示例,我们需要更多上下文。

答案 2 :(得分:0)

使用web-view将所有html文件加载到不同的.JS文件中,并尝试执行此代码

Applicationwindow.js文件,如果你想要android选项菜单,请保留此代码修改

根据你的活动。

函数ApplicationWindow(){

//declare module dependencies

var All = require('ui/common/All');

    Tree = require('ui/common/Tree');

    EBOM = require('ui/common/E-BOM');

    MBOM = require('ui/common/M-BOM');

    SBOM = require('ui/common/S-BOM');

//create object instance

var self = Ti.UI.createWindow({

    title:'Products',

    exitOnClose:true,

    navBarHidden:true,

    backgroundColor:'#ffffff',
    /////////////////////////////////////////////////////////////////////////////

    activity: {

        onCreateOptionsMenu: function(e) {

            var menu = e.menu;              

            var menuItem = menu.add({ title: "C-BOM", icon: 'Arrow-Hover.jpg' });

            //menuItem.setIcon("Arrow-Hover.jpg");

            menuItem.addEventListener("click", function(e) {

                 var all = new All();

                        self.add(all);

            });



            var menuItem = menu.add({ title: "ALL-BOM" });

            menuItem.setIcon("images/refresh_icon.png");

            menuItem.addEventListener("click", function(e) {

                   var tree = new Tree();

                        self.add(tree);

            });


            var menuItem = menu.add({ title: "E-BOM" });

            menuItem.setIcon("images/refresh_icon.png");

            menuItem.addEventListener("click", function(e) {

                    var ebom = new EBOM();

                        self.add(ebom);

            });

            var menuItem = menu.add({ title: "M-BOM" });

            menuItem.setIcon("images/refresh_icon.png");

            menuItem.addEventListener("click", function(e) {

                    var mbom = new MBOM();

                        self.add(mbom);

            });

            var menuItem = menu.add({ title: "S-BOM" });

            menuItem.setIcon("images/refresh_icon.png");

            menuItem.addEventListener("click", function(e) {

                   var sbom = new SBOM();

                        self.add(sbom);

            });


            var menuItem = menu.add({ title: "Logout" });

            menuItem.setIcon("Arrow-Hover.jpg");

            menuItem.addEventListener("click", function(e) {

                 alert("Logout");

            });

           }

          }

    /////////////////////////////////////////////////////////////////////////////

});

var webview = Titanium.UI.createWebView({

    url:'/ui/common/Login.html'

    });

self.add(webview);


return self;

};

module.exports = ApplicationWindow;