gpt4 book ai didi

JavaScript selectionchange-EventListener,在document.execCommand上无限触发

转载 作者:行者123 更新时间:2023-11-28 03:17:01 29 4
gpt4 key购买 nike

我已经为 selectionchange 添加了一个事件监听器,如下所示,

document.addEventListener("selectionchange", 
function()
{
highlight();
console.log("selectionchange-triggered");
}, false);

然后我添加了以下代码,以突出显示所选文本。

function highlight()
{
document.designMode = "on";
document.execCommand("hiliteColor", false, "#ff0000");
document.designMode = "off";
}

调用高亮功能时,selectionchange 的 EventListener 会无限触发,直到我清除选择。

有人遇到过同样的问题吗?任何人都可以提出解决此问题的解决方案吗?

最佳答案

我建议使用一个简单的标志来防止无限循环。 window.setTimeout()电话是因为selectionchange document.execCommand() 时事件不会同步触发被称为。

演示:http://jsfiddle.net/rzmstcot/5/

代码:

var highlighting = false;

function highlight()
{
document.designMode = "on";
highlighting = true;
document.execCommand("hiliteColor", false, "#ff0000");
document.designMode = "off";
window.setTimeout(function() {
highlighting = false;
}, 1);
}

document.addEventListener("selectionchange",
function()
{
if (!highlighting) {
highlight();
}
console.log("selectionchange-triggered");
}, false);

关于JavaScript selectionchange-EventListener,在document.execCommand上无限触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27126343/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com