我们可以使用javascript创建日志文件吗?

时间:2012-03-26 05:05:09

标签: javascript html5

我想将输出从javascript导出到日志文件,而不是在警告框中显示。有没有办法做到这一点。如果是这样,请举例说明。

4 个答案:

答案 0 :(得分:5)

是的,使用谷歌浏览器浏览器点击f12键,然后单击控制台按钮。然后使用

console.log(your code);

您可以记录对象,数组,字符串,变量。比警报更有用。

同样在firefox中,firebug插件非常有用。具有类似功能,并添加了谷歌Chrome内置的检查元素功能。

编辑: 好的,根据您的评论,您不能只写入他们的文件系统。浏览器不会让你。如果你想要一些不引人注目的东西尝试类似于优雅的模态窗口或叠加的东西,那么用户可以选择与之交互而不是烦人的警报和确认。您甚至可以添加类似http://davidwalsh.name/dw-content/top-bar-opacity.php

的内容

答案 1 :(得分:3)

大多数浏览器都支持Console API中的window.console对象:

console.log("Hello world");

答案 2 :(得分:2)

您始终可以将AJAX回叫发送回服务器并跟踪错误消息。

答案 3 :(得分:2)

实际上有一种方法可以做到,但它只适用于Google Chrome,主要用于打包为扩展程序的HTML5应用程序。 There are plans to make it available in wider distributions but not quite there yet。它被称为FileSystem API。这是我刚才玩的一个例子 -

// test HTML5 file system API

function onInitFs(fs){
    console.log("Opened file system " + fs.name);
}

function errorHandler(){
    var msg = '';

    switch(e.code){
        case FileError.QUOTA_EXCEEDED_ERR:
            msg = 'QUOTA_EXCEEDED_ERR';
            break;
        case FileError.NOT_FOUND_ERR:
            msg = 'NOT_FOUND_ERR';
            break;
        case FileError.SECURITY_ERR:
            msg = 'SECURITY_ERR';
            break;
        case FileError.INVALID_STATE_ERR:
            msg = 'INVALID_STATE_ERR';
            break;
        default:
            msg = 'Unknown Error';
            break;
    };

    console.log('Error: ' + msg);
}

window.requestFileSystem(
    window.TEMPORARY,
    5*1024*1024 /*5MB*/,
    onInitFs,
    errorHandler
);

// create empty file called log.txt
// throws an error e is not defined
function onInitFs(fs){
    fs.root.getFile(
        'log.txt', 
        {
            create: true, 
            exclusive: true
        },
        function(fileEntry){
            console.log('fileEntry.isFile = ' + fileEntry.isFile);
            console.log('fileEntry.name = ' + fileEntry.name);
            console.log('fileEntry.fullPath ' + fileEntry.fullPath);
        },
        errorHandler
    );
}

function errorHandler(){
    var msg = '';

    switch(e.code){
        case FileError.QUOTA_EXCEEDED_ERR:
            msg = 'QUOTA_EXCEEDED_ERR';
            break;
        case FileError.NOT_FOUND_ERR:
            msg = 'NOT_FOUND_ERR';
            break;
        case FileError.SECURITY_ERR:
            msg = 'SECURITY_ERR';
            break;
        case FileError.INVALID_STATE_ERR:
            msg = 'INVALID_STATE_ERR';
            break;
        default:
            msg = 'Unknown Error';
            break;
    };

    console.log('Error: ' + msg);
}

window.requestFileSystem(
    window.TEMPORARY, 
    5*1024*1024,
    onInitFs,
    errorHandler
);

// simple debugging
window.requestFileSystem(
    window.TEMPORARY,
    5*1024*1024,
    function(fs){
        console.dir(fs.root);
        fs.root.getFile('log.txt');
    },
    function(error){
        console.dir(error);
    }
);