Нажатие на iFrame не размывает Ext Combobox - PullRequest
3 голосов
/ 08 июля 2010

У меня есть страница с Ext.form.ComboBox и редактором TinyMCE, который использует iframe для своего тела.Проблема в том, что когда ComboBox имеет фокус и пользователь нажимает на iframe, событие размытия ComboBox не запускается.Если пользователь щелкает обратно в ComboBox, событие фокуса также не запускается.Однако document.activeElement действительно переходит на iframe и возвращается обратно в ComboBox.Кто-нибудь еще имел эту проблему или знает, как исправить / обойти ее?

Ответы [ 2 ]

0 голосов
/ 04 января 2012
        setTimeout(function(){
            if($('#yourIframeID')){
                $('#yourIframeID')[0].contentWindow.document.body.onfocus = function(){
                    if(Ext.getCmp('yourComboBoxID')){
                        if(Ext.getCmp('yourComboBoxID').isExpanded){
                            Ext.getCmp('yourComboBoxID').collapse()
                        }
                    }

                }
            }
        },500);

У меня была точно такая же проблема, и я подумал, что заставить ее работать будет намного сложнее, но это то, что я использовал. Вы должны поместить это в функцию и установить эту функцию в конфигурации tinyMCE.init () как

oninit : yourFunctionName

И нам нужен setTimeout (), потому что в chrome (и, вероятно, в других браузерах, кроме Firefox), потому что он срабатывает до рендеринга iframe. Я пытался с 0 таймаутом, но не работал.

0 голосов
/ 08 июля 2010

Запускает ли редактор событие фокуса, которое вы можете обработать?Вы можете позвонить combo.blur() вручную, если сможете выяснить, когда это событие должно было произойти.Если вы можете сказать, что activeElement изменился, вы сможете вручную стереть комбо из того же кода.

...