web-dev-qa-db-ja.com

重力フォームのjsエラー

私たちはwpengineでwordpressサイトをホストしています。この1つのサイトでは重力フォームを使用していますが、何らかの理由で機能しなくなりました。発生するのは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

これで、ローカルマシンにサイトを設定すると、完全に正常に機能します。誰かがこの問題に遭遇しましたか?なぜこれが起こっているのか誰かが知っていますか?

11
stephan2307

この問題の最も一般的な原因は、gravityforms.jsファイルがヘッダーの上部にあるはずのときにフッターに含まれていることです。

関数呼び出しを使用してフォームを埋め込む場合は、header.phpにスクリプトとスタイルシートを含めるために使用する必要がある2番目の関数呼び出しがあります。

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

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

15
richardW8k

私はまったく同じ問題を抱えていて、なんとかそれをいくつかのテーマコードまで追跡することができました。

bones theme を使用していました。これは、デフォルトのjQuery JSの登録を解除し、次のようにGoogleCDNを使用して独自のJSを追加します。

_// 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スクリプトであり、Gravityフォームスクリプトに依存関係があることを除けば、独自の_cdn-jquery_スクリプトを追加します。 jqueryであり、_cdn-jquery_ではありません!

デフォルトのjqueryスクリプトが表示されないため、読み込まれず、サイレントに失敗したように見えます。依存関係を確認せずにJavaScriptが読み込まれるため、このJavaScriptエラーが発生します。

いずれにせよ、ボーンレジスタスクリプトの名前をjqueryに変更して修正しました。これを修正する最善の方法ではないかもしれませんが、機能します。

あるいは、両方のコードをコメントアウトすると、これも修正されます(そして、デフォルトのWordpress JSをそこに残します)。

他のテーマがこれを行うかどうかはわかりませんが、テーマ内でwp_deregister_script('jquery');をすべて検索するか、少なくともデフォルトのテーマに切り替えて、同じ問題が発生するかどうかを確認する価値があるかもしれません(これが私がこれを特定した方法です) 。

5
Sean

OK私は問題を解決しました。何らかの理由で、ファイルform_display.phpが何らかの理由で最新ではありませんでした。そのため、その1つのファイルをサーバーにプッシュするだけで、修正されました。

2
stephan2307

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>
1
Andrews32

Gravityフォームのスクリプトをフッターに移動する

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

私はちょうどこの問題を抱えていました、そして私の場合、それはCloudFlareRocketLoader™によって引き起こされました。無効にした後、フォームは問題なくロードされました。

0
Mithc