【问题标题】:javascript log() vs document.write() - which to use?javascript log() vs document.write() - 使用哪个?
【发布时间】:2013-04-13 05:05:39
【问题描述】:

我正在使用 Remy Sharp 的 twitterlib:https://github.com/remy/twitterlib,在示例文件中,他使用 log(//stuff) 输出到屏幕。我以前只遇到过 document.write() 来填补这个容量,并且只看到 log() 与控制台日志记录结合使用。这是 sn-p(请看第 4 和第 6 行):

var count = 0, limit = 2;
twitterlib.timeline('rem', { limit: 5 }, function (tweets) {
  count++;
  log('<strong>Tweets requested in hit ' + count + '</strong>');
  for (var i = 0; i < tweets.length; i++) {
    log(this.ify.clean(tweets[i].text));
  }

  if (count < limit) {
    this.next();
  }
});

我找不到关于 log() 作为输出到屏幕的独立 javascript 方法的任何信息,所以我想知道继续使用它是否是个好主意,或者我是否应该在屏幕上写另一个方式(例如 document.write() 或 jQuery DOM 操作)以获得更可预测的结果。

有什么信息吗?

【问题讨论】:

  • log 本身并不是原生的 JavaScript 函数。也许您的意思是console.log,正如其他人在这里所建议的那样。我总是建议不要使用 document.write,因为它可能会导致竞争条件,如果 document.open 需要由它在内部调用,则会清空您的页面。
  • huwiler 在下面的帖子回答了这个问题:调用实际上不是对原生 js 方法,而是对定义的函数,我在浏览示例代码时完全错过了。

标签: javascript logging document.write


【解决方案1】:

如果你直接看上面的代码,你会发现 log 的函数定义:

function log(s) {
    document.getElementById('debug').innerHTML += '<p>' + s + '</p>';
}

由于 Paul Irish 将其作为包装器包含在 html5bootstrap 中的 console.log 中,因此您经常看到日志;但在这些情况下,它会打印到控制台而不是窗口。通常,您应该避免使用 document.write 并改用上述异步友好的方法。请参阅 Douglas Crockford 的解释:http://javascript.crockford.com/script.html

【讨论】:

  • 哦。不敢相信我错过了。突然间,一切都变得有意义了。干杯!
猜你喜欢
  • 2020-12-01
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 2011-06-27
  • 2018-05-14
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
相关资源
最近更新 更多