仅当Firebug运行时,HTML块才会出现在DOM中

时间:2010-03-11 15:37:23

标签: javascript dom firebug

过去几个小时里,我一直在反对这一点。

我正在使用Javascript构建一个HTML块并将其附加到页面的DOM中。问题是这只有在Firebug运行并且禁用Firebug无效时才有效。当Firebug没有运行时,代码会被生成但不会附加到DOM(这不是它不可见的东西)。

Safari和Chrome可以解决这个问题。

我应该研究什么?

以下是有罪的代码:如果它看起来很怪异,那是因为它是,并且我现在只是从原始的德国黑魔法风格重构它而没有对自我解释的jquery的评论

function create_button() {

  var textblock = $('div#textblock2');
  var token;

  token = $(textblock).text();
  token = token.split('=')[1]; 
  //delete the text that we parsed to build the btn
  textblock.text(''); 

  var form = write_form();
  var btn = write_submit_btn(token);

  console.log('form: ' + form);
  console.log('btn: ' + btn);

  textblock.append(form);
  textblock.append(btn);

  console.log('textblock2 contents:' + textblock.html());

}

function write_form() {

  return "<form name='Formular'></form>";

}

function write_submit_btn(token) {
  var btn;

  if ( token.match(/weiter/) != null )

    btn = "<input type='button' name='naechsteFrage' value='weiter' onClick='load_next_question();' />";

  else

    btn = "<input type='button' name='naechsteFrage' value='zur" + String.fromCharCode(252) + "ck' onClick='load_prev_question()' />";

  return btn;
}


create_button();

3 个答案:

答案 0 :(得分:2)

console.log('textblock2 contents:' + textblock.html());需要删除...

  console.log('form: ' + form);
  console.log('btn: ' + btn);

当Firebug未启动时,Firefox没有控制台,该功能终止。

所有基于Webkit的浏览器都有内置控制台,因此不受此问题的影响。 (另一方面,IE和Opera也会出现这个问题。[和链接一样,但我认为你并不担心。;-)])

答案 1 :(得分:1)

如果关闭firebug,任何对“console”方法的调用都将失败。这就是问题所在。

答案 2 :(得分:0)

虽然您应该始终在实时环境中删除控制台功能,但以下代码将确保在没有控制台时运行的任何控制台功能都不会出现javascript错误:

if(!window.console||!console.firebug){var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var i=0;i<names.length;++i)window.console[names[i]]=function(){}}