загрузить jquery htmlbox с помощью ajax - PullRequest
1 голос
/ 24 июля 2010

Я использую этот код для загрузки экземпляра htmlbox на мою страницу (на этой странице также загружаются библиотеки, необходимые для использования htmlbox в разделе head):

<div id="container"></div>

<script language="Javascript" type="text/javascript">

 function showEditPnl() {
  var pnl = document.getElementById("container");

  if (window.XMLHttpRequest) {
   // code for IE7+, Firefox, Chrome, Opera, Safari
     xmlhttp=new XMLHttpRequest();
  } else {
   // code for IE6, IE5
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
   if (xmlhttp.readyState==4 && xmlhttp.status==200) {
    pnl.innerHTML = xmlhttp.responseText;
   }
  };
  xmlhttp.open("GET","ajax_getEditor.html",true);
  xmlhttp.send();
 }
</script>

Вот файл ajax_getEditor.html:

<textarea id='ha'></textarea>
<script language="Javascript" type="text/javascript">
$("#ha").css("height","100%").css("width","100%").htmlbox({
    toolbars:[["link","unlink","image"]],
 skin:"blue"
});
</script>

Когда я вызываю метод showEditPnl(), я вижу текстовую область и скрипт на странице. но кажется, что скрипт (загруженный через ajax) не выполняется. Когда я копирую код из ajax_getEditor.html и помещаю его в контейнер, все работает нормально. Я уверен, что это очень простая проблема, но я не знаю, как ее решить ..

Ответы [ 2 ]

1 голос
/ 24 июля 2010

Как отмечается в комментариях, это результат использования .innerHTML, как вы в настоящее время, этот ответ немного касательно проблемы.

Здесь вы можете использовать .load(), поскольку вы уже включили jQuery, чтобы немного упростить ситуацию. Вы бы заменили свою текущую функцию следующим:

function showEditPnl() {
  $("#container").load("ajax_getEditor.html");
}

Или, вы можете запустить свой скрипт в обратном вызове вместо загрузки его с выбранной страницы, например:

function showEditPnl() {
  $("#container").load("ajax_getEditor.html", function() {
    $("#ha").css({height:"100%", width: "100%"}).htmlbox({
      toolbars:[["link","unlink","image"]],
      skin:"blue"
    });
  });
}

В этом случае я также передаю объект .css(), чтобы уменьшить его до одного вызова вместо двух.

0 голосов
/ 24 июля 2010

похоже, что я снова тупая задница. Скрипты должны быть загружены на странице вызова. Простая загрузка тегов скрипта внутри вашей страницы с помощью innerHTML не будет выполнять код внутри Спасибо за указание на это Pointy:)

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