我试图在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上完美运行。
有人可以给我一些关于发生了什么的暗示吗?
答案 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等其他浏览器可以运行