我正在开发一个浏览器扩展程序,它会在您输入 gmail 时突出显示某些单词的难度。我正在使用InboxSDK进行基本的格式更改。
在基本层面上,我编写的逻辑执行以下操作:
- 从作曲家中提取
raw text
(利用 inboxSDK) - 将 传递
raw text
给format()
函数,并取回新生成的 HTML 正文 - 将生成的 HTML 输出替换为 GMail 编写器中的当前 HTML(再次利用 InboxDSK)
GMail 编辑器中现在有一个来自 InboxSDSK 的自定义按钮。如果单击它,就会发生上述情况。
现在,我想让 Gmail 作曲家的 HTML 正文在您输入时做出反应。(即,当用户输入一个难以阅读的句子时,编辑器应该将句子标记为红色。当用户编辑它时,红色突出显示应该消失。)。
我认为这可以通过几种方式来完成。他们都没有工作。
- InboxDSK有一个
bodyChange
事件,但这会立即生成一个无限循环,因为 (1) 用户开始输入 (2) 该format()
函数将旧 HTML 替换为新的格式样式,并且 (3) 触发 bodyChange 然后format()
再次触发该函数等等。
代码:
let OriginalText = document.querySelector('div[contenteditable][aria-label="Message Body"]').innerText;
function format() {
...
composeView.setBodyHTML(OutputText);
}
composeView.on('bodyChanged', function() {
format(OriginalText);
});
- 第二个是使用一种
keydown
方法,所以我写道:
window.addEventListener('keydown', function (e) {
if (e.keyCode == 90) {
format(OriginalText);
}
});
但显然,这不会在 Gmail 中执行。是否停止事件传播?
你会如何处理这个问题?