这是自动对焦的简单指令:
app.directive('autoFocus', function($timeout) {
return {
restrict: 'AC',
link: function(_scope, _element) {
$timeout(function(){
_element[0].focus();
}, 0);
}
};
});
演示:http://jsfiddle.net/ounsqcmt/55/
此指令在Chrome中效果很好,但在Firefox中不起作用。 version 36.00
有什么想法吗?
答案 0 :(得分:0)
它在firefox中显示警告: “不推荐使用getAttributeNode()。请改用getAttribute()。”
似乎这是Firefox中的内部问题,至少有一个警告在https://bugzilla.mozilla.org/show_bug.cgi?id=690120中得到修复。 jQuery也提出了控制台中显示的警告问题。
http://bugs.jquery.com/ticket/12072
但它表明bug已经被他们的结局修复了。
这也可能既不是FireFox的问题,也不是jQuery的错误。由于DOM 4级API的重大变化,它可能是DOM接口问题。
答案 1 :(得分:0)
var app = angular.module("App", []);
app.controller("AppCtrl", function($scope) {
})
app.directive('autoFocus', function($timeout) {
return {
restrict: 'AC',
link: function(_scope, _element) {
$timeout(function(){
window.focus()
_element[0].focus();
}, 0);
}
};
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="App" ng-controller="AppCtrl ">
<form>
<input type="text" />
<input name="theInput" auto-focus />
</form>
</div>
&#13;