bestsource

jquery 3.0 url.indexOf 오류

bestsource 2023. 8. 27. 09:43
반응형

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위와 같이 기능합니다.그리고 모든 것이 예상대로 작동합니다.

더 나은 접근 방식은 이와 같은 폴리필일 수 있습니다.

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

이렇게 하면 기존 코드를 그대로 유지할 수 있습니다.웹 팩을 사용하는 경우 스크립트 로더를 사용해야 합니다.

Jquery 3.0에는 충돌로 인해 특정 메서드를 제거하는 몇 가지 중단된 변경 사항이 있습니다.오류는 .load() 이벤트 제거와 같은 변경 사항 중 하나 때문일 가능성이 높습니다.

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

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

JQuery 최신 버전으로 업데이트한 후 동일한 오류가 발생했습니다.그래서 제가 작업하고 있던 jquery 파일을 이전 답변에 명시된 대로 업데이트했습니다..on("load")대신에.load().

이 해결책은 그다지 안정적이지 않고 가끔은 제게 효과가 없었습니다.따라서 이 문제를 해결하려면 다음에서 코드를 업데이트해야 합니다.

    .load();

로.

    .trigger("load");

저는 https://github.com/stevenwanderski/bxslider-4/pull/1024 에서 이 수정 사항을 얻었습니다.

@choz 답변이 올바른 방법입니다.다양한 용도로 사용되며 변경 없이 모든 곳에서 작동하도록 하려면 다음과 같은 소규모 마이그레이션 스니펫을 추가할 수 있습니다.

/* Migration jQuery from 1.8 to 3.x */
jQuery.fn.load = function (callback) {
    var el = $(this);

    el.on('load', callback);

    return el;
};

이 경우 다른 노드에서 오류가 발생하지 않습니다. 예를 들어$image@Korsmakolnikov 대답처럼!

const $image = $('img.image').load(function() {
  $(this).doSomething();
});

$image.doSomethingElseWithTheImage();

언급URL : https://stackoverflow.com/questions/37738732/jquery-3-0-url-indexof-error

반응형