#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.