Android Webview:未定义控制台

时间:2015-05-29 13:28:20

标签: javascript android webview android-webview

我试图在Android Webview中打开带有一些javascripts的html,并在实现我的WebChromeClient的onConsoleMessage后得到以下错误:

Uncaught ReferenceError: console is not defined -- From line 10 of file:///storage/sdcard0/TargetApp/e184bae3-5824-4e23-a26e-820ce6d32aa2/pres/fce4da510de8431bB3eeD5bdbd1c695d/fce4da510de8431bB3eeD5bdbd1c695d/html/js/target/util_Q_3bb82a6eabd3339d91ca15cb4fd6685c.js

按照我的文件第10行:

console = console ? console : { log : function() {}, debug : function() {}}; 

奇怪的是,相同的代码在浏览器和IOS webview上完美运行。

有人可以给我一些关于发生了什么的暗示吗?

1 个答案:

答案 0 :(得分:0)

对不起家伙,不幸的是我的代码示例不完整。问题是javascript正在设置严格模式

(function($) {

    'use strict';

    /* 
     * 
     */
    jQuery.ajaxSettings.traditional = true;

    console = console ? console : { log : function() {}, debug : function() {}}; 

    window.c = console;

/*
* ...
*/

Specificacion说:

  

使用严格模式时,您不能使用未声明的变量。

所以,正确的方法是:

var console = window.console = window.console ? window.console : { log : function() {}, debug : function() {}};

唯一仍然存在的问题是为什么Chrome,Firefox和ios等其他浏览器可以运行