为了将延迟添加到 jquery 链接,我想将 Ajax Gravity Form 的内联 jQuery 脚本移动到页脚。
我该怎么做?
这对我有用。我希望这也对你有用。
// Force Gravity Forms to init scripts in the footer and ensure that the DOM is loaded before scripts are executed
add_filter( 'gform_init_scripts_footer', '__return_true' );
add_filter( 'gform_cdata_open', 'wrap_gform_cdata_open', 1 );
function wrap_gform_cdata_open( $content = ” ) {
if ( ( defined('DOING_AJAX') && DOING_AJAX ) || isset( $_POST['gform_ajax'] ) ) {
return $content;
}
$content = 'document.addEventListener( "DOMContentLoaded", function() { ';
return $content;
}
add_filter( 'gform_cdata_close', 'wrap_gform_cdata_close', 99 );
function wrap_gform_cdata_close( $content = '' ) {
if ( ( defined('DOING_AJAX') && DOING_AJAX ) || isset( $_POST['gform_ajax'] ) ) {
return $content;
}
$content = ' }, false );';
return $content;
}
这可能有效:
/**
* Force GFORM Scripts inline next to Form Output
*
* force the script tags inline next to the form. This allows
* us to regex them out each time the form is rendered.
*
* see strip_inline_gform_scripts() function below
* which implements the required regex
*/
add_filter("gform_init_scripts_footer", "__return_false");
/**
* Strip out GForm Script tags
*
* note: this diables post and pre render hooks which are triggered
* when the form renders so if you need these then it's important
* to manually re-add them in your compiled JS source code
*/
add_filter("gform_get_form_filter", function( $form_string, $form ) {
return $form_string = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $form_string);
}, 10, 2);