【问题标题】:Android Webview: console is not definedAndroid Webview:未定义控制台
【发布时间】:2015-05-30 01:34:51
【问题描述】:

我正在尝试在 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 上都能完美运行。

有没有人可以告诉我正在发生的事情?

【问题讨论】:

  • 你试过这个控制台=控制台|| { 日志:函数(){},调试:函数(){}};
  • 还没有,我会尝试一些不同的东西,但问题的关键是为什么这个简单的条件可能是错误的。
  • 实际上它适用于我测试过的每个 webview 或浏览器,除非 android webview

标签: javascript android webview android-webview


【解决方案1】:

抱歉各位,很遗憾我的代码示例不完整。问题是javascript设置了严格模式

(function($) {

    'use strict';

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

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

    window.c = console;

/*
* ...
*/

规范说:

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

那么,正确的做法是:

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

唯一仍然悬而未决的问题是为什么其他浏览器(如 Chrome、Firefox 和 ios)也能正常工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 2014-11-25
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多