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