0

我正在开发一个浏览器扩展程序,它会在您输入 gmail 时突出显示某些单词的难度。我正在使用InboxSDK进行基本的格式更改。

在基本层面上,我编写的逻辑执行以下操作:

  1. 从作曲家中提取raw text(利用 inboxSDK)
  2. 将 传递raw textformat()函数,并取回新生成的 HTML 正文
  3. 将生成的 HTML 输出替换为 GMail 编写器中的当前 HTML(再次利用 InboxDSK)

GMail 编辑器中现在有一个来自 InboxSDSK 的自定义按钮。如果单击它,就会发生上述情况。

现在,我想让 Gmail 作曲家的 HTML 正文在您输入时做出反应。(即,当用户输入一个难以阅读的句子时,编辑器应该将句子标记为红色。当用户编辑它时,红色突出显示应该消失。)。

我认为这可以通过几种方式来完成。他们都没有工作。

  1. 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);
});
  1. 第二个是使用一种keydown方法,所以我写道:
window.addEventListener('keydown', function (e) {
   if (e.keyCode == 90) {
     format(OriginalText);
   }
});

但显然,这不会在 Gmail 中执行。是否停止事件传播?

你会如何处理这个问题?

4

0 回答 0