Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mark.js contenteditable-在输入时运行Mark_Javascript_Mark.js - Fatal编程技术网

Javascript Mark.js contenteditable-在输入时运行Mark

Javascript Mark.js contenteditable-在输入时运行Mark,javascript,mark.js,Javascript,Mark.js,我正在制作一个带有contenteditablediv的“单词检查器”,同时使用mark.js提高某些单词/词组的优先级 我遇到的问题是,在键入(复制/粘贴)单词时,我找不到“运行”Mark.js的方法 我试图通过向textarea添加事件侦听器来实现这一点,但这会引发一个错误:mark未定义文本区域。addEventListener(“输入”,标记)并将标记更改为实例textarea.addEventListener(“输入”,实例)这给了我一个错误:TypeError:属性“handleEv

我正在制作一个带有
contenteditable
div的“单词检查器”,同时使用mark.js提高某些单词/词组的优先级

我遇到的问题是,在键入(复制/粘贴)单词时,我找不到“运行”Mark.js的方法

我试图通过向textarea添加事件侦听器来实现这一点,但这会引发一个错误:mark未定义<代码>文本区域。addEventListener(“输入”,标记)并将标记更改为实例
textarea.addEventListener(“输入”,实例)这给了我一个错误:TypeError:属性“handleEvent”不可调用

我也看过SO和google上的各种例子,但我似乎找不到我要找的东西。我找到的最接近的东西是,但我还是找不到

任何帮助都将不胜感激。如果我能提供任何其他信息,请让我知道

var textarea=document.getElementById(“textarea”);
var实例=新标记(“div.textarea”);
var red=[“红色”,“血液”];
var brown=[“brown”,“pudding”];
绿色变量=[“绿色”、“草”];
例如,马克(红色{
separateWordSearch:false,
类名:“红色”,
“准确性”:{
“值”:“完全正确”,
“限制器”:[“,”,“,!”,“?”]
}
});
马克(布朗){
separateWordSearch:false,
类名:“布朗”,
“准确性”:{
“值”:“完全正确”,
“限制器”:[“,”,“,!”,“?”]
}
});
例如,马克(绿色{
separateWordSearch:false,
类名:“绿色”,
“准确性”:{
“值”:“完全正确”,
“限制器”:[“,”,“,!”,“?”]
}
});
textarea.addEventListener(“输入”,标记)
.red{
背景颜色:浅珊瑚;
}
格林先生{
背景颜色:浅绿色;
}
布朗先生{
背景颜色:白肋木;
}
文本检查器
我讨厌血布丁,你也讨厌。

您可以将所有的
实例.mark(…)
调用放在一个单独的函数中(例如
markWords
)。 然后,当输入文本更改时,可以调用该函数:

var textarea = document.getElementById("textarea");
var instance = new Mark("div.textarea");

var red   = ["red", "blood"];
var brown = ["brown", "pudding"];
var green = ["green", "grass"];

//create a function which will highlight all specified words
var markWords = function() {
  instance.mark(red, {
     seperateWordSearch: false,
     className: "red",
     "accuracy": {
        "value": "exactly",
        "limiters": [",", ".", "!", "?"]
     }
  });


  instance.mark(brown, {
     seperateWordSearch: false,
     className: "brown",
     "accuracy": {
        "value": "exactly",
        "limiters": [",", ".", "!", "?"]
     }
  });

  instance.mark(green, {
     seperateWordSearch: false,
     className: "green",
     "accuracy": {
        "value": "exactly",
        "limiters": [",", ".", "!", "?"]
     }
  });
}

//call the markWords function to do the initial highlighting
markWords();

//setup listener to call function markWords
textarea.addEventListener("input", markWords);

非常感谢。tt起作用了。但有一个问题。一旦我输入绿色,它就会将光标/类型指示器抛到单词的开头。知道为什么以及如何修复吗?它看起来像mark.js中的一个bug,试着打开一个问题:谢谢。我在这里发现了一个类似的问题。你知道我该如何解决这个问题吗?我看过这些问题,但没有找到解决办法。我还尝试调用文档()中提到的
done
回调函数中的
instance.mark
的后续调用,但也没有任何帮助。在github上发布了一个问题。谢谢你的帮助。非常感谢。这将带来一个新问题,希望有人知道解决方法。