我发现了IE 10的一些奇怪的行为。我猜它的错误,但我在这里或谷歌都没有找到任何描述,所以我对它不太确定。< / p>
这笔交易是可编辑的问题&#34; pre&#34;标签。实际上,有两个问题。
它可以在IE10上的JSFiddler中重现:
INFO org.apache.solr.core.SolrCore - CORE DESCRIPTOR: {name=collection1, config=solrconfig.xml, transient=false, schema=schema.xml, loadOnStartup=true, instanceDir=collection1, collection=collection1, absoluteInstDir=F:\prosjekt3\nmdc\source\central-api\src\test\resources\solr-5.2.1\server\solr\nmdc\collection1\, dataDir=C:\Windows\Temp\no.nmdc.solr.request.SolrEmbeddedSearchTest_4D0704B125401CE0-001\init-core-data-001, shard=shard1}
以下是我在JSFiddler上录制的demo的链接(由于信誉不佳,我无法附加图片,所以我只给你一个链接。)
一些描述:
任何人都可以确认这是一个错误,或者我只是做错了吗?
如果有人知道任何变通办法,请分享。
谢谢。
答案 0 :(得分:0)
谢谢大家的帮助!
我想我明白了。
是的,它是IE10,contentEditable标记和行结尾\n
的错误。如果你拥有所有这些,那么当你走到行尾时,IE10将光标放在 \n
符号之后,当你尝试输入一些文本时 - 它发生在乞讨新行。
此外,当你看到光标在行的末尾或它在下一行的乞讨时,IE10看不到任何差异(你可以看到它是可视的,但在内部 - 没有区别)。
经过几天的调查,我没有办法克服这种行为(或者说这些状态有所不同)
因此,我只需将所有\n
替换为<br />
:
if (IE.isTheBrowser && IE.actualVersion === 10) {
var newLineFix = new RegExp("\n", "g");
s = s.replace(newLineFix, "<br />");
}
就是这样!错误不再发生。
关于编辑无用儿童的第二个问题。我只写了以下修复(当用户输入符号时发生):
function getOldRange() {
return document.selection.createRange();
}
function onKeyPress() {
if (getOldRange()) {
var oldRange = getOldRange();
if (IE.isTheBrowser && IE.actualVersion === 10) {
var parent = oldRange.parentElement();
if (parent.getAttribute("contentEditable") === "false") {
var newRange = document.createRange();
newRange.setStartAfter(parent);
newRange.setEndAfter(parent);
var selection = getNewSelection();
selection.removeAllRanges();
selection.addRange(newRange);
}
}
...
}
}
我知道这是一个混乱的代码,但它对我来说非常完美!
希望它对某人有帮助。