Можем ли мы создавать файлы журналов, используя JavaScript - PullRequest
5 голосов
/ 26 марта 2012

Вместо отображения в окне предупреждения я хочу направить свой вывод из javascript в файл журнала. Есть ли способ сделать это. Если да, объясните это на примере.

Ответы [ 4 ]

5 голосов
/ 26 марта 2012

Да, с помощью браузера Google Chrome нажмите клавишу F12 и нажмите кнопку консоли. Тогда используйте

console.log(your code);

вы можете регистрировать объекты, массивы, строки, переменные. Гораздо полезнее, чем оповещения.

Также в Firefox плагин Firebug весьма полезен. Имеет аналогичные функции и добавляет функцию проверки элементов, встроенную в Google Chrome.

EDIT: Хорошо, основываясь на вашем комментарии, вы не можете просто написать в их файловую систему. Браузер не позволит вам. Если вы хотите что-то ненавязчивое, попробуйте что-нибудь вроде классного модального окна или наложения, что-то, с чем пользователь может взаимодействовать, а не раздражающие предупреждения и подтверждения. Вы могли бы даже добавить что-то вроде этого http://davidwalsh.name/dw-content/top-bar-opacity.php

3 голосов
/ 26 марта 2012

Большинство браузеров поддерживают объект window.console из Консольного API :

console.log("Hello world");
2 голосов
/ 26 марта 2012

На самом деле есть способ сделать это, но он доступен только в Google Chrome и в основном для приложений HTML5, упакованных как расширения. Есть планы сделать его доступным в более широких дистрибутивах, но пока не совсем там . Он называется 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);
    }
);
2 голосов
/ 26 марта 2012

Вы всегда можете отправить AJAX-вызов обратно на сервер и отследить там сообщения об ошибках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...