Как вставить стилизованный текст, например, жирный шрифт и выделить его после вставки по клику? - PullRequest
0 голосов
/ 29 апреля 2020

Я близок к желаемой цели после того, как нашел код, который мне «почти» нужен из другого вопроса

Проблема, однако, заключается в том, что цель их кода отличается от моей. Они пытаются использовать его для чата.

Вот демонстрация исходного кода, который мне нужно понять и настроить

Я создал простой инструмент, который уже используется мной и моей командой, но есть ограничение textarea. Я хотел преобразовать textarea в contenteditable, чтобы я мог добавить стиль к тексту, который вставляю, используя скрипт вставки onclick.

Мой сценарий onclick выглядит следующим образом:

<script>
var isChrome = !!window.chrome && !!window.chrome.webstore;
var mapObj = {
'n100': 'The 2020 amendment, effective May 12, 2020, ',
'n101': 'twice ',
'n102': 'in ',
'n103': 'the ',
'n104': 'sentence',
'n105': 'first sentence',
'n106': 'second sentence',
'n107': 'third sentence',
'n108': 'fourth sentence',
'n109': 'last sentence',
'n110': 'paragraph',
'n111': 'first paragraph',
'n112': 'second paragraph',
'n113': 'third paragraph',
'n114': 'fourth paragraph',
'n115': 'last paragraph',
'n116': 'at the beginning',
'n117': 'at the end',
'n118': 'added the (*) designation',
'n119': 'designation',
'n120': 'added “”',
'n121': 'and “”',
'n122': 'through ',
'n123': 'substituted “” for “”',
'n124': '“” for “”',
'n125': 'deleted “” following “”',
'n126': '“” following “”',
'n127': 'deleted “” preceding “”',
'n128': '“” preceding “”',
'n129': 'deleted former (*), which read: “”',
'n130': 'which formerly read: “”',
'n131': 'which read: “”',
'n132': 'redesignated former (*) as (*)',
'n133': 'redesignated former (*) and (*) as (*) and (*)',
'n134': 'redesignated former (*) through (*) as (*) through (*)',
'n135': 'in the concluding language',
'n136': 'in the concluding language of ',
'n137': 'in the introductory language',
'n138': 'in the introductory language of ',
'n139': 'rewrote (*)',
'n140': 'rewrote the section.',
'n141': 'rewrote (*), which formerly read: “”',
'n142': 'renumbered this section, which formerly appeared as § xxx, and',
'n143': 'and made a related change.',
'n144': 'and made related changes.',
'n145': 'and made a stylistic change.',
'n146': 'and made stylistic changes.',
'n147': 'and made related and stylistic changes.',
'n148': 'added ',
'n148': 'added ',
'n149': 'deleted ',
'n150': 'and ',
'n151': 'in ',
'n152': 'the ',
'n153': 'of ',
'n190': '—',
'n191': '§'
}

jQuery(".cbtn1000, .cbtn1").on("click", function(event) {
  var currButtonId = jQuery(event.target).attr('id');
  var mappedText = mapObj[currButtonId];

    jQuery("#codearea1").focus();
    document.execCommand('insertText', false, mappedText);
});
</script>

Его цель заключается в том, что если я щелкну соответствующий button с соответствующим id, он вставит этот текст в мой textarea (ранее, что теперь является спорным)

Теперь, поскольку я знаю, что можно поместить стиль, например highlight и bold, как мне на самом деле вставить его onclick в contenteditable box?

Я не могу сделать это с моим текущим скриптом, потому что если я вставлю теги типа <b>Hello</b>, он будет вставлен именно так. Я хотел бы, чтобы теги <b></b> стилизовали текст.

Может быть, возможно иметь 2 "пути" (не могу найти слово, что я имею в виду, где я могу поместить текст в конец -конец), чтобы описать мой onclick сценарий, где, если я добавлю <b></b> или <mark></mark> где-нибудь в сценарии и Hi в другой его части, так как они разделены, теперь будут применяться теги стиля.

Вот демонстрационная версия , где я объединил полученный код и мой код, который вставляет текст по клику. Обратите внимание, что я не очень хорошо разбираюсь в JavaScript, даже в основах, я просто пытаюсь проанализировать его, и иногда он работает.

Как мне создать скрипт только для одной кнопки, например:

'n101': 'twice ',

n101 - это id twice - текст, который мне нужно вставить

Если бы я мог просто увидеть сценарий, где его можно стилизовать Я просто проанализирую и скопирую процесс, который будет использоваться на других кнопках.

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