2016-09-18 173 views
1

我的朋友们,下面的代码用于在Chrome中工作到52.x版本,但在最新版本中,它不再工作。你们有没有任何想法,为什么它不起作用?OnInput事件不再有效

https://jsfiddle.net/2jtrs2m2/

<input type="text" id="test" /> 

<script type="text/javascript"> 

var my_event = document.createEvent("TextEvent");  
my_event.initTextEvent("textInput",true,false,window,"T"); 

document.getElementById("test").focus(); 

document.getElementById("test").dispatchEvent(my_event); 

</script> 

通常当我执行该代码时,Chrome将插入字符T IN的输入端。我不想在一些非常特殊的情况下使用document.getElementById(“xxx”)value =“T”,因为我正在使用上面的代码来触发oninput事件,这个事件由于某种原因不再工作。

+1

奇怪!你的事件数据有console.log(my_event.data);显示“T”。我会对解决方案感兴趣:-)虽然我认为这是一个铬合金问题 –

+0

Yeap,你是对的。这真的很奇怪,在控制台里它看起来很好。 – Samul

+1

我可以确认从Chrome 52.0.2743.116更新到53.0.2785.116可以解决这个问题。 –

回答

0

尝试使用document.exec命令 即; document.execCommand("insertText", false, "foo");

+0

工作:)这将是很好,如果它可能只会触发execComand特定的输入 – Samul