这个问题众所周知,在IE中出于某种疯狂的原因,Backspace用于返回历史导航。在flex web应用程序中,有时会出现这个微软错误,并且以透明和简单的方式解决这个问题非常头疼。
通常在编辑文本和textarea或textInput位于TabNavigator容器内或编辑文本时出现此问题,而textarea位于弹出窗口内。
答案 0 :(得分:2)
我对这个问题有了更好的答案。 Yury的回答对我的案子没有帮助。编辑adobe的history.js文件的帮助是什么:
在文件顶部附近,他们检查了useragent:
} else if (useragent.indexOf("msie") != -1 ) {
browser.ie = true;
browser.version = parseFloat(useragent.substring(useragent.indexOf('msie') + 4));
我注意到它没有拿起Internet Explorer,因为useragent现在说“mozilla”而不是msie。
} else if (useragent.match(/msie|trident|edge/) ) {
browser.ie = true;
browser.version = useragent.indexOf('msie') < 0 ? 7 : parseFloat(useragent.substring(useragent.indexOf('msie') + 4));
我只是将版本设置为7,如果它匹配三叉戟或边缘,因为此版本的adobe代码仅检查7或更少。
答案 1 :(得分:1)
嗯,解决方案是两个工作的组合。
第一个是项目中的index.template.html文件(Flash Builder)或结束的html中的javascript变化。
<script type="text/javascript">
function init() {
window.onkeydown = function(e) {
var event = window.event || e;
if(event.keyCode==8) {
document.getElementById('${application}').focus();
event.returnValue=false;
}
};
setInitialFocus();
}
function setInitialFocus() {
document.getElementById('${application}').tabIndex = 0;
document.getElementById('${application}').focus();
}
</script>
<body onload="init()">
第二个是你的项目变化很小。您需要在项目内的所有TabNavigator组件中将名为historyManagementEnabled的属性更改为false。
<mx:TabNavigator historyManagementEnabled="false">
</mx:TabNavigator>
请注意Accordion和ViewStack&lt; --- TabNavigator组件,因为它们实现了IHistoryManagementClient,如http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/IHistoryManagerClient.html所述