2015-05-29 20 views
1

我試圖打開HTML與一款Android網頁視圖一些JavaScript和工具後收到以下錯誤onConsoleMessage我WebChromeClient的:Android的web視圖:控制檯沒有定義

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上完美工作。

有沒有人能告訴我發生了什麼?

+0

您是否嘗試過這個控制檯=控制檯|| {log:function(){},debug:function(){}}; –

+0

還沒有,我會嘗試一些不同的東西,但問題的關鍵是爲什麼這個簡單的條件可能是錯誤的。 –

+0

其實它適用於我測試過的每個webview或瀏覽器,除非android webview –

回答

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它的工作原理