Jquery заменяет html

#jquery #html #confluence #atlassian-ui

#jquery #HTML #слияние #atlassian-пользовательский интерфейс

Вопрос:

В confluence мне нужно изменить текст на странице на изображение внутри таблицы, у меня есть несколько значений, которые необходимо заменить изображением. Итак, я создал следующий Jquery и поместил его в пользовательский macro.

 <script>
AJS.toInit(function() {
AJS.$("body").html($("body").html().replace(/text to be replaced/g,'<img src="image.png">'))
});
</script>
  

Это отлично работает, чтобы заменить текст изображением. Но это нарушает левое меню при вводе макроса.
Когда я запускаю строку
AJS.$(«тело»)…
непосредственно в инструментах разработчика в консоли из Google Chrome это не нарушает меню.

Кажется, я не могу понять, как это решить. У кого-нибудь есть идея?

Комментарии:

1. Я бы предположил, что это проблема времени / условие гонки. Что бы ни происходило в левом меню, вероятно, не завершилось, когда этот скрипт выполняется в пользовательском макросе. Если дать ему немного больше времени, выполнив его в консоли разработчика, можно завершить рендеринг в левом меню.

Ответ №1:

 $(document).ready(function(){   
    $("#btn2").click(function(){
 var a= $("#a").html();
     a=a.replace('<i> with Italic</i>','<u> with UnderLine</u>');   
        alert("HTML: "   $("#a").html());
 $("#a").html(a);
        alert("HTML: "   a);
    });
});  
 <html>
  <head>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script></head>
  <body>
  <div id ='a'>
This is a div<i> with Italic</i></br>
<b>and bold</b>
</div>

<button id="btn2">Show HTML</button>
  </body>
  </html>  

Ответ №2:

Если вам нужно изменить текст только внутри содержимого в confluence, вам необходимо изменить содержимое #main div:

 AJS.$("#main").html($("#main").html().replace(/text to be replaced/g,'<img src="image.png">'))
  

Я думаю, вы нарушаете слияние меню js.