我做了一个壳程序。 输入网址用webview显示html5网页。
网页上有2个按钮。一个是确认。一个是清除。但是清除按钮能执行。 确认按钮却不能执行。用android默认的浏览器却可以执行。有人知道这个是为什么吗?
mWebView.getSettings().setJavaScriptEnabled(true);
<uses-permission android:name="android.permission.INTERNET" />
这2个我都已经加入了。

解决方案 »

  1.   

    <link rel="stylesheet" href="lib/resources/css/sencha-touch.css" type="text/css">
    <script type="text/javascript" src="lib/sencha-touch.js"></script>
    <script type="text/javascript" src="src/index.js"></script>
    <body>
    </body>
    </html>
    js:
    Ext.setup({
        icon: 'icon.png',
        tabletStartupScreen: 'tablet_startup.png',
        phoneStartupScreen: 'phone_startup.png',
        glossOnIcon: false,
        onReady: function() {        var form;
            
            Ext.regModel('User', {
                fields: [
                    {name: 'name',     type: 'string'},
                    {name: 'password', type: 'string'},
                    {name: 'name1',    type: 'string'},
                    {name: 'password1',type: 'string'},
                    {name: 'rank',     type: 'string'},
                    {name: 'email',    type: 'string'},
                    {name: 'email1',   type: 'string'},
                    {name: 'color',    type: 'string'},
                    {name: 'team',     type: 'string'},
                    {name: 'secret',   type: 'boolean'}
                ]
            });
         
             Ext.regModel('Ranks', {
                fields: [
                    {name: 'rank',     type: 'string'},
                    {name: 'title',    type: 'string'}
                ]
             });
            
            var ranksStore = new Ext.data.JsonStore({
               data : [
                    { rank : 'master',  title : '~20岁'},
                    { rank : 'padawan', title : '21~25岁'},
                    { rank : 'teacher', title : '26~30岁'},
                    { rank : 'aid',     title : '36~40岁'}
               ],
               model : 'Ranks',
               autoLoad : true,
               autoDestroy : true
            });

      Ext.regModel('Professions', {
                fields: [
                    {name: 'profession',     type: 'string'},
                    {name: 'title',    type: 'string'}
                ]
             });
            
            var professionStore = new Ext.data.JsonStore({
               data : [
                    { profession : 'master',  title : '学生'},
                    { profession : 'padawan', title : '自由人士'},
                    { profession : 'teacher', title : '商人'},
                    { profession : 'aid',     title : '主妇'}
               ],
               model : 'Professions',
               autoLoad : true,
               autoDestroy : true
            });

    Ext.regModel('Field', {
                fields: [
                    {name: 'field',     type: 'string'},
                    {name: 'title',    type: 'string'}
                ]
             });
            
            var fieldStore = new Ext.data.JsonStore({
               data : [
                    { field : 'master',  title : '网吧'},
                    { field : 'padawan', title : '学校'},
                    { field : 'teacher', title : '会社'},
                    { field : 'aid',     title : '公司'}
               ],
               model : 'Field',
               autoLoad : true,
               autoDestroy : true
            });
            
            var formBase = {
                scroll: 'vertical',
                url   : 'postUser.php',
                standardSubmit : false,
     instructions: 'Copyright (c) 1999-2006 ABIC Co., Ltd. All Rights Reserved.',
    items: [{
                        xtype: 'fieldset',
                        title: '以下の項目をご記入の上登録ボタンを押して下さい。',
                      
                        defaults: {
                            required: true,
                            labelAlign: 'center',
                            labelWidth: '40%'
                        }
    },{
    xtype: 'fieldset',
    title: '氏名漢字(全角漢字)',
                defaults: {
                    // labelAlign: 'right'
                    labelWidth: '35%'
                },
                items: [{
                    xtype: 'textfield',
                    name: 'name',
                    label: '(氏)',
                    placeHolder: 'Tom Roy',
                    autoCapitalize : true,
                    required: true,
                    useClearIcon: true
                }, {
                    xtype: 'textfield',
                    name: 'password',
                    label: '(名)',
                    useClearIcon: true
                }
    ]
    },
    {
    xtype: 'fieldset',
    title: '氏名カナ(全角カナ)',
                defaults: {
                    // labelAlign: 'right'
                    labelWidth: '35%'
                },
                items: [{
                    xtype: 'textfield',
                    name: 'name1',
                    label: '(氏)',
                    placeHolder: 'Tom Roy',
                    autoCapitalize : true,
                    required: true,
                    useClearIcon: true
                }, {
                    xtype: 'textfield',
                    name: 'password1',
                    label: '(名)',
                    useClearIcon: true
                } ]
    } ,{
    xtype: 'fieldset',
    title: '年 齢',
                defaults: {
                    // labelAlign: 'right'
                    labelWidth: '35%'
                },
                items: [{
                    xtype: 'selectfield',
                    name: 'rank',
                 valueField : 'rank',
                    displayField : 'title',
                    store : ranksStore
                } ]
    } ,{
    xtype: 'fieldset',
    title: '性 別',            defaults: {
                    // labelAlign: 'right'
                    labelWidth: '35%'
                },
                items: [{
                            xtype: 'radiofield',
                            name: 'team',
                            label: '女',
                            value : '女'
                        }, {
                            xtype: 'radiofield',
                            name: 'team',
                            label: '男',
                            value: '男'
                        } ]
    } ,{
    xtype: 'fieldset',
    title: '職 業',
                defaults: {
                    // labelAlign: 'right'
                    labelWidth: '35%'
                },
                items: [{
                    xtype: 'selectfield',
                    name: 'rank1',
                 valueField : 'profession',
                    displayField : 'title',
                    store : professionStore
                } ]
    } ,{
    xtype: 'fieldset',
    title: 'メールアドレス(半角)',
                defaults: {
                    // labelAlign: 'right'
                    labelWidth: '35%'
                },
                items: [{
                    xtype: 'emailfield',
    id: 'email',
                    name: 'email',
                    autoCapitalize : true,
                    required: true,
                    useClearIcon: true
                } ]
    } ,{
    xtype: 'fieldset',
    title: 'メールアドレス(確認用)',
                defaults: {
                    // labelAlign: 'right'
                    labelWidth: '35%'
                },
                items: [{
                    xtype: 'emailfield',
    id: 'email1',
                    name: 'email1',
                    autoCapitalize : true,
                    required: true,
                    useClearIcon: true
                } ]
    } ,{
    xtype: 'fieldset',
    title: '株式または投信の経験',            defaults: {
                    // labelAlign: 'right'
                    labelWidth: '35%'
                },
                items: [{
                            xtype: 'radiofield',
                            name: 'team',
                            label: 'あり',
                            value : 'あり'
                        }, {
                            xtype: 'radiofield',
                            name: 'team',
                            label: 'なし',
                            value: 'なし'
                        } ]
    } ,{
    xtype: 'fieldset',
    title: '現在アクセスしている場所',
                defaults: {
                    // labelAlign: 'right'
                    labelWidth: '35%'
                },
                items: [{
                    xtype: 'selectfield',
                    name: 'field1',
                 valueField : 'field',
                    displayField : 'title',
                    store : fieldStore
                } ]
    } ,{ items: [
                { ui: 'confirm', text: 'Confirm', name:'button' },
            ]}
    ] ,

                listeners : {
                    submit : function(form, result){
                        console.log('success', Ext.toArray(arguments));
                    },
                    exception : function(form, result){
                        console.log('failure', Ext.toArray(arguments));
                    }
                },
            
      

  2.   


                dockedItems: [
                    {
                        xtype: 'toolbar',
                        dock: 'bottom',
                        items: [
                            
                            {xtype: 'spacer'},
                            {
                                text: '取消',
                                handler: function() {
                                    form.reset();
                                }
                            },
                            {
                                text: '登录',
                                ui: 'confirm',
                                handler: function() {
    var emailname=Ext.getCmp("email").getValue();
    window.localStorage.setItem("email",emailname);

                                    if(formBase.user){
                                        form.updateRecord(formBase.user, true);
                                    }

    var email1name = Ext.getCmp("email1");
    email1name.setValue(window.localStorage.getItem("email"));
    // Ext.Msg.alert('提示信息',window.localStorage.getItem("email"));
        form.submit({
                                        waitMsg : {message:'Submitting', cls : 'demos-loading'}
                                    });
                                }
                            }
                        ]
                    }
                ]
            };        if (Ext.is.Phone) {
                formBase.fullscreen = true;
            } else {
                Ext.apply(formBase, {
                    autoRender: true,
                    floating: true,
                    modal: true,
                    centered: true,
                    hideOnMaskTap: false,
                    height: 385,
                    width: 480
                });
            }
            
            form = new Ext.form.FormPanel(formBase);
            form.show();
        }
    });
      

  3.   

    只要去掉        var emailname=Ext.getCmp("email").getValue();
           localStorage.setItem("email",emailname);
                var email1name = Ext.getCmp("email1");
                  email1name.setValue(localStorage.getItem("email"));
     Ext.Msg.alert('提示信息',localStorage.getItem("email"));
           form.submit({
           waitMsg : {message:'Submitting', cls : 'demos-loading'}
           });去掉localStorage方法。就可以执行。请问是不是 android  webview 不支持 localStorage和sessionStorage呢?如果支持请问要+什么东西
      

  4.   

    只有1.6以上版本才可以支持 
    具体是通过反射调用webSettings.setDatabaseEnabled(),webSettings.setDomStorageEnabled(),因为此两方法都不可见
    Object[] values = new Object[]{true};
    Class[] types = new Class[]{Boolean.TYPE};
    invoke(WebSettings.class, webSettings, "setDatabaseEnabled", values, types);
    invoke(WebSettings.class, webSettings, "setDomStorageEnabled", values, types);public Object invoke(Class class, Object obj, String methodName, Object[] args, Class[] types)
    {
    Method method = null;
    Object result = null;

    try
    {
    method = mClass.getMethod(methodName, types);
    result = method.invoke(obj, args);

    }
    catch (Exception e)
    { }

    return result;
        }