单击iFrame不会模糊Ext Combobox

时间:2010-07-08 13:34:52

标签: javascript iframe extjs combobox onblur

我有一个包含Ext.form.ComboBox和TinyMCE编辑器的页面,它使用iframe作为其主体。问题是,当ComboBox具有焦点并且用户单击iframe时,不会触发ComboBox的模糊事件。如果用户单击回ComboBox,则也不会触发焦点事件。但是,document.activeElement确实更改为iframe并正确返回到ComboBox。有没有其他人有这个问题或知道修复/解决方法呢?

2 个答案:

答案 0 :(得分:0)

编辑器是否会触发您可以处理的焦点事件?如果您能确定该事件何时发生,您可以手动调用combo.blur()。如果您能够告诉activeElement已更改,则应该能够从相同的代码手动模糊组合。

答案 1 :(得分:0)

        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超时但没有工作。