Javascript AngularJS指令';s元素有时在Firefox中没有定义

Javascript AngularJS指令';s元素有时在Firefox中没有定义,javascript,angularjs,firefox,Javascript,Angularjs,Firefox,我一直遇到这个奇怪的错误,这似乎只发生在Firefox上:我有一个元素标记,比如说,并有以下指令: app.directive('directiveElement', function() { return { restrict: 'E', template: '<input type="text" />', link: function(scope, element, attrs) {

我一直遇到这个奇怪的错误,这似乎只发生在Firefox上:我有一个元素标记,比如说
,并有以下指令:

app.directive('directiveElement', function()
{
    return {
        restrict: 'E',
        template: '<input type="text" />',
        link: function(scope, element, attrs)
        {
            element.on('focus', function()
            {
                // Do something with element
                // for instance, call element.scrollLeft();
            });
        }

    }
})
app.directive('directiveElement',function()
{
返回{
限制:'E',
模板:“”,
链接:函数(范围、元素、属性)
{
on('focus',function()
{
//用元素做些什么
//例如,调用element.scrollLeft();
});
}
}
})
每隔一段时间,Firefox就会向我抛出一个错误,说不能对null调用
scrollLeft()。我尝试用控制台记录
元素本身,它是一个角度元素,但长度为0

我不明白这怎么会是一个问题,因为
输入
,一旦angular找到指令
,就会注入所有绑定。如果我能看到输入,那就意味着它产生了。那么为什么元素不可用呢


这可能是什么原因?这似乎很随机。我所要做的就是一次又一次地刷新我所在的页面,最终会发生这种情况(即,除了刷新之外,我不做任何其他事情,有时我可以忽略这个错误)。这同样只适用于Firefox

尝试更改为
,可能会有所帮助。不,不会。我已经试过了。如果angular找到了指令并加载了模板,我不理解元素是如何未定义的!只是猜测一下,尝试在返回对象中添加replace:true,我仍然随机得到错误。
根据HTML规范永远都不正确。如果它能工作,你是幸运的,因为兼容的浏览器不能支持它。仅允许某些本机元素以这种方式声明。