繁体   English   中英

js无法在人行横道中执行“更改”或“确认”功能

[英]Can't js function 'alter' or 'confirm' in crosswalk

人行横道16.45.421.19

我在项目中将人行横道用作库,但是当我在html中调用js函数“ alert”时,会出现一些错误。

05-17 16:12:27.136: E/chromium(2559): [ERROR:xwalk_autofill_client.cc(172)]                         Not implemented reached in virtual void          xwalk::XWalkAutofillClient::OnFirstUserGestureObserved()
05-17 16:12:27.251: I/chromium(2559): [INFO:CONSOLE(376)] "exec() is calledSmartdotTelephone.deviceInfo", source: file:///android_asset/www/common/mau/MDHAdapter.js (376)
05-17 16:12:27.271: W/ResourceType(2559): No package identifier when getting value for resource number 0x00000000
05-17 16:12:27.271: W/System.err(2559): android.content.res.Resources$NotFoundException: String resource ID #0x0
05-17 16:12:27.271: W/System.err(2559):     at android.content.res.Resources.getText(Resources.java:319)
05-17 16:12:27.271: W/System.err(2559):     at android.content.res.Resources.getString(Resources.java:405)
05-17 16:12:27.271: W/System.err(2559):     at android.content.Context.getString(Context.java:382)
05-17 16:12:27.271: W/System.err(2559):     at org.xwalk.core.internal.XWalkUIClientInternal.onJsAlert(XWalkUIClientInternal.java:390)
05-17 16:12:27.271: W/System.err(2559):     at org.xwalk.core.internal.XWalkUIClientInternal.onJavascriptModalDialog(XWalkUIClientInternal.java:166)
05-17 16:12:27.271: W/System.err(2559):     at org.xwalk.core.internal.XWalkContentsClientBridge.handleJsAlert(XWalkContentsClientBridge.java:715)
05-17 16:12:27.271: W/System.err(2559):     at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
05-17 16:12:27.271: W/System.err(2559):     at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:53)
05-17 16:12:27.271: W/System.err(2559):     at android.os.Handler.dispatchMessage(Handler.java:102)
05-17 16:12:27.271: W/System.err(2559):     at android.os.Looper.loop(Looper.java:135)
05-17 16:12:27.271: W/System.err(2559):     at android.app.ActivityThread.main(ActivityThread.java:5423)
05-17 16:12:27.271: W/System.err(2559):     at java.lang.reflect.Method.invoke(Native Method)
05-17 16:12:27.271: W/System.err(2559):     at java.lang.reflect.Method.invoke(Method.java:372)
05-17 16:12:27.271: W/System.err(2559):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:947)
05-17 16:12:27.271: W/System.err(2559):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:742)
05-17 16:12:27.271: A/chromium(2559): [FATAL:jni_android.cc(249)] Check failed: false. Please include Java exception stack in crash report

我在XWalkUIClientInternal.java中看到了人行横道的来源

@XWalkAPI
public boolean onJsAlert(XWalkViewInternal view, String url, String message,
        XWalkJavascriptResultInternal result) {
    final XWalkJavascriptResultInternal fResult = result;
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(mContext);
    dialogBuilder.setTitle(mContext.getString(R.string.js_alert_title))
            .setMessage(message)
            .setCancelable(true)
            .setPositiveButton(mContext.getString(android.R.string.ok),
                    new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    fResult.confirm();
                    dialog.dismiss();
                }
            })
            .setOnCancelListener(new DialogInterface.OnCancelListener() {
                @Override
                public void onCancel(DialogInterface dialog) {
                    fResult.cancel();
                }
            });
    mDialog = dialogBuilder.create();
    mDialog.show();
    return false;
}

R.string.js_alert_title是人行横道的资源ID,它不是我项目中的本地资源ID,为什么人行横道不将动态加载本地资源用于警报功能,以及如何解决?

Crosswalk在调用js“警报”功能时效果很好。 例如,资产文件夹中有一个js_java_interaction.html:

<html>
<script type="text/javascript">

    function alertMessage(message) {
        alert(message)
    }
</script>
Java-Javascript Interaction In Android
</html>

在您的活动中加载html: mXWalkView.load("file:///android_asset/js_java_interaction.html", null);

加载后,请使用评估Java API()API:

call = "javascript:alertMessage(\"" + "content" + "\")";
xwalkview.evaluateJavascript(call, null); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM