以下代码适用于Chrome和Firefox,通过JSNI和纯JavaScript中的所有浏览器,但不能通过JSNI在IE上使用。
GWT JSNI:
html {
width:120x;
margin-left:0px;
}
body{
width:120px;
font-family: arial;
font: arial;
margin-left: 0px;
max-width:120px;
}
JavaScript的:
// windowEl is the contentWindow of an iframe
protected native Element insertImage(String src, String title, String cssClassname, Element windowEl)
/*-{
var result = null;
var selRanges = windowEl.getSelection(); // no ranges returned here on IE
if (selRanges.rangeCount > 0) {
var curRange = selRanges.getRangeAt(0);
if (curRange.toString().length == 0) {
var imageNode = windowEl.document.createElement('img');
imageNode.src = src;
imageNode.alt = title;
imageNode.title = title;
imageNode.className = cssClassname;
curRange.insertNode(imageNode);
result = imageNode;
}
}
return result;
}-*/;
当通过JSNI运行时,getSelection()在IE上没有返回任何内容时会出现问题。
我正在使用GWT 2.7& IE 10进行测试。
为什么会发生这种情况的任何想法?这是GWT 2.7的错误吗?
答案 0 :(得分:1)
确保您的iframe的contentWindow没有失去焦点。 IE无法像其他人一样优雅地处理这些情况。
尝试:
// windowEl is the contentWindow of an iframe
protected native Element insertImage(String src, String title, String cssClassname, Element windowEl)
/*-{
var result = null;
windowEl.focus(); // ***** add this to be sure you're not losing focus
var selRanges = windowEl.getSelection(); // no ranges returned here on IE
if (selRanges.rangeCount > 0) {
...
}
return result;
}-*/;