Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在刷新时进行选择刷新';s在更改时打开-chrome_Javascript_Jquery_Html_Google Chrome - Fatal编程技术网

Javascript 在刷新时进行选择刷新';s在更改时打开-chrome

Javascript 在刷新时进行选择刷新';s在更改时打开-chrome,javascript,jquery,html,google-chrome,Javascript,Jquery,Html,Google Chrome,这在Firefox上可以正常工作,但在Chrome上不能 小提琴示例: setTimeout(函数(){ $('#s1')。追加(“新”); },2000); 如果选择框在超时结束时打开,则在您关闭并重新打开选择框之前,列表不会更新。有没有办法让它在Chrome上打开时更新选择列表?(我猜IE上太理想了,尽管这不是必需的) 我可以使用replaceWith强制取消选择它,但这会产生一种丑陋的效果,我更希望它只是更改列表并保持打开状态 实际情况是,我的选择框正在等待ajax调用,用户很容易在aj

这在Firefox上可以正常工作,但在Chrome上不能

小提琴示例:

setTimeout(函数(){
$('#s1')。追加(“新”);
},2000);
如果选择框在超时结束时打开,则在您关闭并重新打开选择框之前,列表不会更新。有没有办法让它在Chrome上打开时更新选择列表?(我猜IE上太理想了,尽管这不是必需的)

我可以使用
replaceWith
强制取消选择它,但这会产生一种丑陋的效果,我更希望它只是更改列表并保持打开状态


实际情况是,我的选择框正在等待ajax调用,用户很容易在ajax完成之前打开选择框。

这有两个部分,更新下拉框时必须模糊下拉框,然后重新打开它。去掉焦点很容易,重新打开列表却不容易。我用这个技巧重新打开它

var showDropdown = function (element) {
    var event;
    event = document.createEvent('MouseEvents');
    event.initMouseEvent('mousedown', true, true, window);
    element.dispatchEvent(event);
};

setTimeout(function(){
    var focused = false;
    if($('#s1').is(":focus")) {
        $('#s1').blur();
        focused = true;
    }
    $('#s1').append("<option>NEW</option>");
    if(focused) {
        showDropdown($('#s1')[0]);
    }
},4000);
var showDropdown=函数(元素){
var事件;
event=document.createEvent('MouseEvents');
initMouseEvent('mousedown',true,true,window);
元素。dispatchEvent(事件);
};
setTimeout(函数(){
var=false;
如果($('s1')。是(“:焦点”)){
$('#s1').blur();
专注=正确;
}
$('#s1')。追加(“新”);
如果(聚焦){
下拉列表($('s1')[0]);
}
},4000);

这是提琴:

在Chrome中它似乎对我有效……你能澄清你的问题是什么吗?@General_Twyckenham如果你运行它并立即打开select,你会在2秒钟后得到“NEW”条目?它在Chrome中也对我有效。你对什么版本的chrome和什么操作系统有问题?哦,这是必要的澄清。你想在列表处于打开/活动状态时更新它。@General_Twyckenham是的,我会编辑以使其更清晰这实际上在Chrome中有效,但在Firefox中不起作用,因为模糊在两者中都起作用,但showDropdown仅在Chrome中起作用。嗯,默认行为在FF上起作用,所以我只需检查它是否为FF。这很有效。不太理想,但由于FF中存在所有函数(尽管它们会抛出错误),我不能只检查它们是否存在。评论说这仍然有效,您是一个救生员!
var showDropdown = function (element) {
    var event;
    event = document.createEvent('MouseEvents');
    event.initMouseEvent('mousedown', true, true, window);
    element.dispatchEvent(event);
};

setTimeout(function(){
    var focused = false;
    if($('#s1').is(":focus")) {
        $('#s1').blur();
        focused = true;
    }
    $('#s1').append("<option>NEW</option>");
    if(focused) {
        showDropdown($('#s1')[0]);
    }
},4000);