0
誰でも次のJSエラーの意味を教えていただけますか?JS jquery rangeError - 最大呼び出しスタックサイズを超えました
私はそれがこのために、おそらくだと思うが、コードスニペットJS:
<!--move cursor to the end of input value-->
<script>
$(document).ready(function() {
jQuery.fn.putCursorAtEnd = function() {
return this.each(function() {
// Cache references
var $el = $(this),
el = this;
// Only focus if input isn't already
if (!$el.is(":focus")) {
$el.focus();
}
// If this function exists... (IE 9+)
if (el.setSelectionRange) {
// Double the length because Opera is inconsistent about whether a carriage return is one character or two.
var len = $el.val().length * 2;
// Timeout seems to be required for Blink
setTimeout(function() {
el.setSelectionRange(len, len);
}, 1);
} else {
// As a fallback, replace the contents with itself
// Doesn't work in Chrome, but Chrome supports setSelectionRange
$el.val($el.val());
}
// Scroll to the bottom, in case we're in a tall textarea
// (Necessary for Firefox and Chrome)
this.scrollTop = 999999;
});
};
(function() {
var searchInput = $(".js-typeahead");
searchInput
.putCursorAtEnd() // should be chainable
.on("focus", function() { // could be on any event
searchInput.putCursorAtEnd()
});
})();
});
</script>
でエラーは、無限ループを作成したことを意味します。私の推測はあなたが 'focus'で関数を実行しているからですが、関数自身が再び' focus'イベントをトリガします。あなたのコードに 'debugger'をセットし、それをステップ実行すれば、再帰呼び出しがどこから来ているのかを簡単に知ることができます。 –