Chrome / Safari模糊功能支持检查jquery

时间:2010-11-24 13:24:45

标签: jquery google-chrome blur

我正在尝试检测文件上传输入字段何时更新。 在IE& FF如果我使用blur(),我可以这样做但是对于Chrome我需要使用change()。 由于Chrome(我相信safari)不会触发blur事件,因此jquery.supports对象中有一个属性来检查这个或者我是否必须使用已弃用的.browser对象?

这是一个显示我的意思的示例页面,如下面的海报所示,所有三个浏览器都可以使用已更改的事件,这是我应该使用的但我认为对于检测支持的问题仍然有用模糊事件。

<html>
    <head>
        <script src="jquery-1.4.3.min.js" type="text/javascript"></script>
        <script type="text/javascript">
        $(document).ready(function () {
            $('#test-input').change(function () { alert('changed'); });
            $('#test-input').blur(function () { alert('blurred'); });
            });
        </script>
    </head>
    <body>
        <input type="file" id="test-input">
    </body>
</html>

1 个答案:

答案 0 :(得分:0)

如果您使用此功能支持您的活动,请尝试检测我无法理解的功能,但是我忘记了它的位置:

var isEventSupported = function(eventName) { //Function to detect supported events
var el = document.createElement('div');
    eventName = 'on' + eventName;
    var isSupported = (eventName in el);
    if (!isSupported) {
        el.setAttribute(eventName, 'return;');
        isSupported = typeof el[eventName] == 'function';
        }
    el = null;
    return isSupported;
    }

之后定义一个包含你的/或事件的变量:

var ChangeOrBlur = (isEventSupported('blur')) ? 'blur' : 'change'; //with change as your default

然后将您的函数绑定到您预先存在的事件:

$('#test-input').bind(ChangeOrBlur, function(){alert(ChangeOrBlur);});

让我知道这对你有用...