programing

중력 형태의 js 오차

oldcodes 2023. 3. 20. 23:35
반응형

중력 형태의 js 오차

wpengine에서 워드프레스 사이트를 호스팅하고 있습니다.이 사이트에서는 중력 형태를 사용하고 있습니다만, 어떠한 이유로 작동이 정지되어 있습니다.js 에러만 표시됩니다.

Uncaught ReferenceError: gformInitSpinner is not defined (index):135
(anonymous function) (index):135
o jquery.min.js:2
p.fireWith jquery.min.js:2
e.extend.ready jquery.min.js:2
c.addEventListener.B

로컬 머신에 사이트를 셋업하면 완벽하게 동작합니다.이 문제를 발견한 사람이 있습니까?왜 이런 일이 일어나는지 아는 사람?

이 문제의 가장 일반적인 원인은 gravityforms.js 파일이 머리글에 올라와 있을 때 바닥글에 포함되어 있기 때문입니다.

함수 호출을 사용하여 폼을 삽입하는 경우 헤더에 스크립트 및 스타일시트를 포함하기 위해 사용할 두 번째 함수 호출이 있습니다.php

// gravity_form_enqueue_scripts($form_id, $ajax);
gravity_form_enqueue_scripts(4, true);

https://docs.gravityforms.com/gravity_form_enqueue_scripts/

나도 똑같은 문제가 있어서 테마코드까지 추적했어.

기본 jQuery JS의 등록을 취소하고 Google CDN을 사용하여 자체 jQuery JS를 추가하는 bones 테마를 사용하고 있었습니다.

// we don't need the Wordpress jquery as we are loading our own version
add_action('wp_enqueue_scripts', 'stnic_remove_jquery');
function stnic_remove_jquery(){
    if(!is_admin()) {
        wp_deregister_script('jquery');
    }
}


// loading modernizr and jquery, and reply script
function bones_scripts_and_styles() {
    if (!is_admin()) {
        wp_register_script( 'cdn-jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js', array(), '', false );
    }
}

보다시피deregister는 디폴트입니다.jquery스크립트를 작성한 후 자체 스크립트를 추가합니다.cdn-jqueryGravity 형식 스크립트가 다음 조건에 의존한다는 사실 이외에는 괜찮은 스크립트입니다.jquery가 아니라cdn-jquery!

기본값을 볼 수 없기 때문입니다.jquery스크립트는 로딩되지 않으며, 단순히 의존관계를 확인하지 않고 로딩된 JavaScript 오류만 발생시키는 것처럼 보일 수 있습니다.

어쨌든 bones register 스크립트에 이름을 붙여 수정했습니다.jquery이 문제를 해결하는 최선의 방법은 아닐 수 있지만, 동작합니다.

또는 두 개의 코드를 코멘트 아웃하면 이 문제도 해결됩니다(기본 Wordpress JS도 여기에 남습니다).

다른 테마가 이와 같은 기능을 하는지 모르겠지만, 테마에 있는 모든 것을 검색할 가치가 있을 수 있습니다.wp_deregister_script('jquery');또는 최소한 기본 테마로 전환하여 동일한 문제가 발생하는지 확인합니다(이렇게 해서 정확하게 설명했습니다).

네, 문제를 해결했습니다.어떤 이유로 파일 form_display가 표시됩니다.php는 어떤 이유로 최신이 아닙니다.그래서 그 파일 하나를 서버에 푸시하면 바로잡을 수 있습니다.

또한 GF의 필요한 스크립트를 header.php에 수동으로 추가할 수도 있습니다(jQuery 등록/등록 해제를 위한 액션은 필요 없음).예를 들어:

<link rel='stylesheet' id='gforms_formsmain_css-css'  href='/wp-content/plugins/gravityforms/css/formsmain.min.css' type='text/css' media='all' />
<link rel='stylesheet' id='gforms_ready_class_css-css'  href='/wp-content/plugins/gravityforms/css/readyclass.min.css' type='text/css' media='all' />
<link rel='stylesheet' id='gforms_browsers_css-css'  href='/wp-content/plugins/gravityforms/css/browsers.min.css' type='text/css' media='all' />
<script type='text/javascript' src='/wp-content/plugins/gravityforms/js/jquery.json-1.3.js'></script>
<script type='text/javascript' src='/wp-content/plugins/gravityforms/js/gravityforms.min.js'></script>

방금 이 문제가 발생했는데, 저 같은 경우에는 CloudFlare RocketLoader™가 원인입니다.무효로 하면, 폼은 문제없이 로드됩니다.

Gravity 양식의 스크립트를 바닥글로 이동

add_filter("gform_init_scripts_footer", "init_scripts");
function init_scripts() {
    return true;
}

언급URL : https://stackoverflow.com/questions/23786388/js-error-on-gravity-forms

반응형