這個問題衆所周知,在IE中出於某種瘋狂的原因Backspace被用來回溯你的歷史導航。在Flex Web應用程序中,有時會出現這種微軟錯誤,並且以透明和簡單的方式解決這個問題非常令人頭痛。IE 8和IE 11上Flex應用程序中的Backspace問題
當您編輯文本和textarea或textinput在TabNavigator容器內或者您正在編輯文本和textarea在彈出窗口內時,通常會出現此問題。
這個問題衆所周知,在IE中出於某種瘋狂的原因Backspace被用來回溯你的歷史導航。在Flex Web應用程序中,有時會出現這種微軟錯誤,並且以透明和簡單的方式解決這個問題非常令人頭痛。IE 8和IE 11上Flex應用程序中的Backspace問題
當您編輯文本和textarea或textinput在TabNavigator容器內或者您正在編輯文本和textarea在彈出窗口內時,通常會出現此問題。
那麼,解決方案是兩個工作的組合。
第一個是您的項目(Flash Builder)中的index.template.html文件或結束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組件中更改爲false屬性historyManagementEnabled。
<mx:TabNavigator historyManagementEnabled="false">
</mx:TabNavigator>
我有更好的回答這個問題,要知道在手風琴和ViewStack < --- TabNavigator的成分,因爲他們實現了IHistoryManagementClient。尤里的回答對我的情況沒有幫助。沒有什麼幫助下編輯Adobe的history.js文件:
在配置文件的頂部,他們檢查的UserAgent:
} else if (useragent.indexOf("msie") != -1) {
browser.ie = true;
browser.version = parseFloat(useragent.substring(useragent.indexOf('msie') + 4));
我注意到,它並沒有回升了IE瀏覽器,因爲用戶代理說「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或更少。
這不僅僅是IE; Firefox做同樣的事情,至少在我的系統(Windows 7 64位) – Brian
類似的問題:http://stackoverflow.com/questions/1495219/how-can-i-prevent-the-backspace-key-from-navigating -back?rq = 1 – Brian
我不明白爲什麼Brian會降低我的問題,如果我唯一的目的是分享我發現的東西。我感覺不是在這裏發佈任何東西。如果我發佈這是因爲我發現它對我有用,我想我會爲別人。 –