2015-04-30 40 views
0

這個問題衆所周知,在IE中出於某種瘋狂的原因Backspace被用來回溯你的歷史導航。在Flex Web應用程序中,有時會出現這種微軟錯誤,並且以透明和簡單的方式解決這個問題非常令人頭痛。IE 8和IE 11上Flex應用程序中的Backspace問題

當您編輯文本和textarea或textinput在TabNavigator容器內或者您正在編輯文本和textarea在彈出窗口內時,通常會出現此問題。

+0

這不僅僅是IE; Firefox做同樣的事情,至少在我的系統(Windows 7 64位) – Brian

+0

類似的問題:http://stackoverflow.com/questions/1495219/how-can-i-prevent-the-backspace-key-from-navigating -back?rq = 1 – Brian

+0

我不明白爲什麼Brian會降低我的問題,如果我唯一的目的是分享我發現的東西。我感覺不是在這裏發佈任何東西。如果我發佈這是因爲我發現它對我有用,我想我會爲別人。 –

回答

1

那麼,解決方案是兩個工作的組合。

第一個是您的項目(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> 

描述http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/IHistoryManagerClient.html

2

我有更好的回答這個問題,要知道在手風琴和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或更少。