我正在尝试在 HTML5 帮助系统中动态修改 Adobe 的 RoboHelp 2017 生成的某些文本中的字符串。
我正在尝试查找文本“In this Topic”是否存在于对象标签后面的段落中,其中对象标签的 ID 为 MapCtrl。
这是从 Firefox 的 Inspector 复制的相关 HTML 的片段:
<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 this Topic <a class="dropspot" href="javascript:TextPopup(this)" id="MTHotSpot46267"><span class="MTText" style="display: none;">Show</span><span class="MTText">Hide</span></a></p>
我可以使用以下 JS 代码处理所需的文本:
const minitoc = document.querySelector('#MapCtrl + p');
const text = minitoc.textContent;
console.log (typeof text);
console.log(text);
console.log(text.includes('In this Topic'));
console.log(text.indexOf('In this Topic'));
在我的控制台中,我可以验证我的文本变量确实是字符串类型。我还可以在控制台中直观地看到日志输出中存在“In this Topic”。但是,我的 .includes 方法总是返回 false。(.indexOf 也不起作用)
我认为它可能是因为
在 HTML 中添加到该字符串中的代码而失败了,但我也尝试了这种变体,但这也不起作用:
console.log(text.includes('In this Topic'));
奇怪的是,它可以很好地找到单个单词。例如,这将返回 true:
console.log(text.includes('Topic'));
但是每当我尝试添加一个空格来搜索整个短语“In this Topic”时,它都会返回 false。
我在网上搜索了一个解决方案,并研究了 MDN 部分的.includes 方法。但无法弄清楚为什么它返回false。
预先感谢您的帮助。