7

在一个学校项目中,我正在运行一些通过控制台窗口输入并从那里运行的 javascript。该脚本操作网页并将结果输出到控制台。

问题:以持久的方式保存/保存这些结果,在浏览器关闭、脚本故障/页面重新加载或如果可能的话,电脑崩溃时不会消失。

我曾想过使用 Log4js 或 jStorage (jQuery Storage) 等框架,但由于这不是我要操作的网站,因此我无法向页面添加代码或标记。

有没有办法做到这一点?

注意:将结果记录到控制台并不重要,如果这样更容易记录,我可以将它们发送到某个地方或对它们执行其他操作。

谢谢。

4

3 回答 3

9

这是一个将日志存储到WebStorage的小函数(跨浏览器会话持续存在):

console.plog = function () {
    var key = Date.now();
    var value = JSON.stringify([].slice.call(arguments));
    localStorage.setItem(key, value);
    console.log.apply(console, arguments);
}

要恢复日志,您必须运行以下表达式:

(function restoreLogs() {
    var timestamps = Object.keys(localStorage).sort();
    timestamps.forEach(function (ts) {
        var logArgs = JSON.parse(localStorage.getItem(ts));
        console.log.apply(console, logArgs);
    });
}());
于 2012-04-19T07:52:43.460 回答
8

如果您想在 Chrome 控制台中自动保存所有内容,则必须使用以下选项运行 Chrome:

--enable-logging --v=1

它将完整的 chrome 日志保存在其数据目录中(请注意,该文件将在每次运行时被覆盖)。更多细节在这里

替代方法:安装Sawbuck实用程序来管理 Chrome 日志。

于 2012-04-18T12:55:07.383 回答
1

使用console.error(arg);- 它会将控制台消息发送到浏览器stderr(我很确定它也会在发布版本中这样做。)

从命令行启动浏览器并将您的浏览器重定向stderr到某个文件(类似于 的内容chrome 2>errlog)。

于 2012-04-18T12:51:44.250 回答