0

Adoboe の RoboHelp 2017 によって、HTML5 で生成されたヘルプ ファイルに自動的に作成される次のコードがあります。

<object id="MapCtrl" classid="CLSID:A8ECFBF5-08CC-4065-BD74-0FAD1EA61317" data-rhtags="1" class="" width="1" height="1">
</object>
<p style="font-family:Arial;font-size:12pt;font-weight: normal;font-style: normal;text-decoration: none;" data-rhtags="1" class="" align="left">In&nbsp;this&nbsp;Topic&nbsp;<a class="dropspot" href="javascript:TextPopup(this)" id="MTHotSpot46267"><span class="MTText" style="display: none;">Show</span><span class="MTText">Hide</span></a></p>

In&nbsp;this&nbsp;Topic&nbsp;javascript を使用して、アンカー タグの表示/非表示リンクに影響を与えずに、テキストのインスタンスをローカライズされた文字列で動的に変更しようとしています。

これが私の現在の試みです:

function localizeMiniTOC(){
    const minitoc = document.querySelector('#MapCtrl + p');
    const text = minitoc.textContent;
    console.log (typeof text);
    console.log(text.includes('In\xa0this\xa0Topic'));
    if (text.includes('In\xa0this\xa0Topic') === true){
        let html = minitoc.innerHTML;
        linkStart = html.indexOf('<a');
        remaining = html.substring(linkStart,html.length);
        minitoc.innerHTML = 'En Este Tema ' + remaining;
    }
}

これはテキストを変更しますが、私が抱えている問題は、RoboHelp が作成するイベント リスナーも破棄することです。たとえば、上記のコードを適用する前の元の Firefox インスペクターは次のようになります。

次のイベント リスナーがあることに注意してください。 ここに画像の説明を入力

上記のコードを実行すると、次のようになります。

イベントリスナーはなくなりました: ここに画像の説明を入力

今日、いくつかの調査を行いましたが、このリンクから、.innerHTML を使用すると「イベント リスナーなどの内部データが削除される」ことを理解しています: Element innerHTML がイベント リスナーを取り除く

しかし、アンカータグの前のテキストを上書きする別の方法を理解できないようですが、リンクの表示/非表示とイベントリスナーは無傷のままです。

私が試した他のこと:

minitoc.insertAdjacentHTML('beforebegin','<p>En\xa0Este\xa0Tema\xa0' + remaining + '</p>');

(リンクされたページの例は、既存の要素に追加することでこれを行う方法を示していますが、要素に追加するのではなく、アンカー タグに至るまでのテキストを上書きする必要があります。)

  • .setAttribute を使用して onclick イベントを再作成しようとしました: minitoc.setAttribute('onClick()',TextPopup('MTHotSpot46267'));

  • イベントリスナーを再作成しようとしましたが、それもうまくいきませんでした: minitoc.addEventListener('click', TextPopup('MTHotSpot46267'));

オンラインのすべての例は、テキストの上書きではなく、追加または先頭への追加を扱っているようです。

In&nbsp;this&nbsp;Topic&nbsp;リンクの表示/非表示およびそれらのリンクのイベント リスナーに影響を与えずに、ローカライズされた文字列でテキストを動的に上書きするにはどうすればよいですか?

4

1 に答える 1