HTML-чанк появляется в DOM только во время работы Firebug - PullRequest
1 голос
/ 11 марта 2010

Я бился головой об это последние несколько часов.

Я создаю фрагмент HTML с помощью Javascript и добавляю его в 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 ]

2 голосов
/ 11 марта 2010

console.log('textblock2 contents:' + textblock.html()); необходимо удалить ... как и

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

Когда Firebug не включен, Firefox не имеет консоли, и функция завершается.

Все браузеры, основанные на Webkit, имеют встроенную консоль и, таким образом, защищены от этой проблемы. (IE и Opera, с другой стороны, также имели бы эту проблему. [И Ссылки тоже, но я не думаю, что вы беспокоитесь об этом. ;-)])

1 голос
/ 11 марта 2010

Любые вызовы "консольных" методов завершатся неудачей, если firebug закрыт. Это проблема.

0 голосов
/ 11 марта 2010

Хотя вы всегда должны удалять консольные функции в реальной среде, следующий код гарантирует, что любая выполняемая консольная функция не выдаст ошибку 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(){}}
...