Skip to content

Commit 0b3b65c

Browse files
poveukarser
authored andcommitted
Defer + Async Recaptcha JS (#4)
* Defer + Async Recaptcha JS Non-blocking content JS loading * PR fixes * require at least twig 2.9 to support apply
1 parent 12a2855 commit 0b3b65c

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
{% block karser_recaptcha3_widget %}
2-
{% filter spaceless %}
2+
{% apply spaceless %}
33
{%- set type = type|default('hidden') -%}
44
{{ block('form_widget_simple') }}
55

66
{% if form.vars.enabled -%}
7-
<script src="https://www.google.com/recaptcha/api.js?render={{ form.vars.site_key }}"></script>
87
<script>
9-
grecaptcha.ready(function() {
8+
var recaptchaCallback_{{ id }} = function() {
109
grecaptcha.execute('{{ form.vars.site_key }}', {action: '{{ form.vars.action_name }}'}).then(function(token) {
1110
document.getElementById('{{ id }}').value = token;
1211
});
13-
});
12+
};
1413
</script>
14+
<script src="https://www.google.com/recaptcha/api.js?render={{ form.vars.site_key }}&onload=recaptchaCallback_{{ id }}" async defer></script>
15+
1516
{%- endif %}
16-
{% endfilter %}
17+
{% endapply %}
1718
{% endblock %}

Tests/FunctionalTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public function testFormJavascriptPresent_ifEnabled()
3838

3939
//THEN
4040
self::assertContains('<input type="hidden" id="form_captcha" name="form[captcha]" />', $view);
41-
self::assertContains('<script src="https://www.google.com/recaptcha/api.js?render=key"></script>', $view);
41+
self::assertContains('<script src="https://www.google.com/recaptcha/api.js?render=key&onload=recaptchaCallback_form_captcha" async defer></script>', $view);
4242
self::assertContains("document.getElementById('form_captcha').value = token;", $view);
4343
}
4444

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
"symfony/templating": "~2.7|~3.0|~4.0",
2222
"symfony/yaml": "~2.7|~3.0|~4.0",
2323
"symfony/validator": "~2.7|~3.0|~4.0",
24-
"symfony/twig-bundle": "~2.7|~3.0|~4.0"
24+
"symfony/twig-bundle": "~2.7|~3.0|~4.0",
25+
"twig/twig": "^2.9"
2526
},
2627
"require-dev": {
2728
"phpunit/phpunit": "~7.4"

0 commit comments

Comments
 (0)