[jquery] jquery 3.0 url.indexOf 오류

로 업데이트되면 jQuery에서 다음과 같은 오류가 발생합니다 v3.0.0.

jquery.js:9612 Uncaught TypeError: url.indexOf is not a function

왜 그런지 알아?



답변

다음load 과 같이 함수 를 호출하는 모든 코드를 업데이트 하십시오 .

$(window).load(function() { ... });

$(window).on('load', function() { ... });

jquery.js : 9612 Uncaught TypeError : url.indexOf는 함수가 아닙니다

이 오류 메시지는 jQuery.fn.load기능 에서 발생 합니다.

내 응용 프로그램에서 동일한 문제가 발생했습니다. 일부 파고 후, 나는이 문을 발견 jQuery를 블로그 ,

jQuery 1.8 이후로 더 이상 사용되지 않는 .load, .unload 및 .error 는 더 이상 없습니다 . .on ()을 사용하여 리스너를 등록하십시오.

jQuery 객체가 load위와 같이 함수를 호출하는 방식을 변경하기 만하면 됩니다. 그리고 모든 것이 예상대로 작동합니다.


답변

더 나은 접근 방식은 다음과 같은 polyfill 일 수 있습니다

jQuery.fn.load = function(callback){ $(window).on("load", callback) };

이를 통해 레거시 코드를 그대로 유지할 수 있습니다. 웹팩을 사용하는 경우 반드시 스크립트 로더를 사용하십시오.


답변

Jquery 3.0에는 충돌로 인해 특정 방법을 제거하는 몇 가지 주요 변경 사항이 있습니다. .load () 이벤트 제거와 같은 이러한 변경 중 하나로 인해 오류가 발생했을 가능성이 큽니다.

jQuery Core 3.0 업그레이드 가이드 에서 자세히 알아보십시오

이 문제를 해결하려면 Jquery 3.0과 호환되도록 코드를 다시 작성하거나 더 이상 사용되지 않거나 제거 된 API 및 동작을 복원하는 JQuery Migrate 플러그인 을 사용할 수 있습니다 .


답변

최신 버전의 JQuery로 업데이트 한 후 동일한 오류가 발생했습니다. 따라서 이전 답변에서 언급 한대로 작업중 인 jquery 파일을 업데이트 했으므로 .on("load")대신.load() .

이 수정은 매우 안정적이지 않으며 때로는 저에게 효과적이지 않습니다. 따라서이 문제를 해결하려면 다음에서 코드를 업데이트 해야합니다.

    .load();

    .trigger("load");

https://github.com/stevenwanderski/bxslider-4/pull/1024 에서이 수정 프로그램을 받았습니다.


답변