Drupal 7: how do I add the async attribute to an external JS script when using drupal_add_js?
I've tried:
drupal_add_js('http://somesite.com/pages/scripts/0080/8579.js', [
'type' => 'external',
'async' => TRUE
]);
and
drupal_add_js('http://somesite.com/pages/scripts/0080/8579.js', [
'type' => 'external',
'async' => 'async'
]);
With no results.
Would any know how I could achieve this?
javascript drupal drupal-7 drupal-hooks
add a comment |
I've tried:
drupal_add_js('http://somesite.com/pages/scripts/0080/8579.js', [
'type' => 'external',
'async' => TRUE
]);
and
drupal_add_js('http://somesite.com/pages/scripts/0080/8579.js', [
'type' => 'external',
'async' => 'async'
]);
With no results.
Would any know how I could achieve this?
javascript drupal drupal-7 drupal-hooks
add a comment |
I've tried:
drupal_add_js('http://somesite.com/pages/scripts/0080/8579.js', [
'type' => 'external',
'async' => TRUE
]);
and
drupal_add_js('http://somesite.com/pages/scripts/0080/8579.js', [
'type' => 'external',
'async' => 'async'
]);
With no results.
Would any know how I could achieve this?
javascript drupal drupal-7 drupal-hooks
I've tried:
drupal_add_js('http://somesite.com/pages/scripts/0080/8579.js', [
'type' => 'external',
'async' => TRUE
]);
and
drupal_add_js('http://somesite.com/pages/scripts/0080/8579.js', [
'type' => 'external',
'async' => 'async'
]);
With no results.
Would any know how I could achieve this?
javascript drupal drupal-7 drupal-hooks
javascript drupal drupal-7 drupal-hooks
asked Nov 12 '18 at 5:34
MeltingDog
4,82624105188
4,82624105188
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You can't achieve this just by specifying the option because drupal_add_js()
does not support async
attribute.
It is recommended to use defer
which is (imho) better because it doesn't block HTML parsing.
async
: script fetched asynchronously, then HTML parsing is paused to execute the script, then parsing resumes.defer
: script fetched asynchronously and executed only after HTML parsing is done.
However, if you really need the async
attribute, you can implement the hook_preprocess_html_tag
to alter the theme variables, like so :
function moduleortheme_preprocess_html_tag(&$variables) {
$el = &$variables['element'];
if ($el['#tag'] !== 'script' || empty($el['#attributes']['src'])) {
return;
}
# External scripts to load asynchronously
$async = [
'http://somesite.com/pages/scripts/0080/8579.js',
#...
];
if (in_array($el['#attributes']['src'], $async)) {
$el['#attributes']['async'] = 'async';
}
}
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53256412%2fdrupal-7-how-do-i-add-the-async-attribute-to-an-external-js-script-when-using-d%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can't achieve this just by specifying the option because drupal_add_js()
does not support async
attribute.
It is recommended to use defer
which is (imho) better because it doesn't block HTML parsing.
async
: script fetched asynchronously, then HTML parsing is paused to execute the script, then parsing resumes.defer
: script fetched asynchronously and executed only after HTML parsing is done.
However, if you really need the async
attribute, you can implement the hook_preprocess_html_tag
to alter the theme variables, like so :
function moduleortheme_preprocess_html_tag(&$variables) {
$el = &$variables['element'];
if ($el['#tag'] !== 'script' || empty($el['#attributes']['src'])) {
return;
}
# External scripts to load asynchronously
$async = [
'http://somesite.com/pages/scripts/0080/8579.js',
#...
];
if (in_array($el['#attributes']['src'], $async)) {
$el['#attributes']['async'] = 'async';
}
}
add a comment |
You can't achieve this just by specifying the option because drupal_add_js()
does not support async
attribute.
It is recommended to use defer
which is (imho) better because it doesn't block HTML parsing.
async
: script fetched asynchronously, then HTML parsing is paused to execute the script, then parsing resumes.defer
: script fetched asynchronously and executed only after HTML parsing is done.
However, if you really need the async
attribute, you can implement the hook_preprocess_html_tag
to alter the theme variables, like so :
function moduleortheme_preprocess_html_tag(&$variables) {
$el = &$variables['element'];
if ($el['#tag'] !== 'script' || empty($el['#attributes']['src'])) {
return;
}
# External scripts to load asynchronously
$async = [
'http://somesite.com/pages/scripts/0080/8579.js',
#...
];
if (in_array($el['#attributes']['src'], $async)) {
$el['#attributes']['async'] = 'async';
}
}
add a comment |
You can't achieve this just by specifying the option because drupal_add_js()
does not support async
attribute.
It is recommended to use defer
which is (imho) better because it doesn't block HTML parsing.
async
: script fetched asynchronously, then HTML parsing is paused to execute the script, then parsing resumes.defer
: script fetched asynchronously and executed only after HTML parsing is done.
However, if you really need the async
attribute, you can implement the hook_preprocess_html_tag
to alter the theme variables, like so :
function moduleortheme_preprocess_html_tag(&$variables) {
$el = &$variables['element'];
if ($el['#tag'] !== 'script' || empty($el['#attributes']['src'])) {
return;
}
# External scripts to load asynchronously
$async = [
'http://somesite.com/pages/scripts/0080/8579.js',
#...
];
if (in_array($el['#attributes']['src'], $async)) {
$el['#attributes']['async'] = 'async';
}
}
You can't achieve this just by specifying the option because drupal_add_js()
does not support async
attribute.
It is recommended to use defer
which is (imho) better because it doesn't block HTML parsing.
async
: script fetched asynchronously, then HTML parsing is paused to execute the script, then parsing resumes.defer
: script fetched asynchronously and executed only after HTML parsing is done.
However, if you really need the async
attribute, you can implement the hook_preprocess_html_tag
to alter the theme variables, like so :
function moduleortheme_preprocess_html_tag(&$variables) {
$el = &$variables['element'];
if ($el['#tag'] !== 'script' || empty($el['#attributes']['src'])) {
return;
}
# External scripts to load asynchronously
$async = [
'http://somesite.com/pages/scripts/0080/8579.js',
#...
];
if (in_array($el['#attributes']['src'], $async)) {
$el['#attributes']['async'] = 'async';
}
}
answered Nov 13 '18 at 17:07
EricLavault
2,2191325
2,2191325
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53256412%2fdrupal-7-how-do-i-add-the-async-attribute-to-an-external-js-script-when-using-d%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown