web-dev-qa-db-fra.com

<link rel = preload> doit avoir une valeur `as` valide

J'essaie de précharger une vidéo en utilisant la valeur rel de précharge de la balise link par documentation de mdn sur la précharge .

dans mon fichier index.html j'ajoute ce qui suit à la tête:

<link rel="preload" as="video" type="video/mp4" href="video/2_1.mp4" />

Dans chrome cela fonctionne très bien et précharge le fichier sans problème.

Lorsque j'ouvre la page dans Safari 11.3 sur mon bureau ou sur un iPhone, j'obtiens un message d'erreur sur la console:

doit avoir une valeur as valide

Selon la section "quels types de contenu peuvent être préchargés" de la documentation qui contient la liste des valeurs valides, j'utilise certainement le type video correct.

J'ai vérifié à la fois la documentation mdn pour l'option de préchargement de safari mobile sur la balise de lien et elle montre un point d'interrogation "compatibilité inconnue". J'ai également vérifié caniuse et cela semble indiquer que tant que ma version de safari mobile est à 11,3, je devrais pouvoir l'utiliser.

Le téléphone et mon bureau sont tous les deux en safari 11.3, donc je ne sais pas pourquoi je reçois cette erreur.

Des idées/idées ??

11
Chris Schmitz

il semble que le webkit désactive la précharge pour les fichiers vidéo et audio.

if (RuntimeEnabledFeatures::sharedFeatures().mediaPreloadingEnabled() && (equalLettersIgnoringASCIICase(as, "video") || equalLettersIgnoringASCIICase(as, "audio")))
    return CachedResource::MediaResource;
if (equalLettersIgnoringASCIICase(as, "font"))
    return CachedResource::FontResource;
#if ENABLE(VIDEO_TRACK)
if (equalLettersIgnoringASCIICase(as, "track"))
    return CachedResource::TextTrackResource;
#endif
return std::nullopt;

https://github.com/WebKit/webkit/blob/master/Source/WebCore/loader/LinkLoader.cpp#L125

auto type = LinkLoader::resourceTypeFromAsAttribute(as);
if (!type) {
    document.addConsoleMessage(MessageSource::Other, MessageLevel::Error, String("<link rel=preload> must have a valid `as` value"));
    return nullptr;
}

https://github.com/WebKit/webkit/blob/master/Source/WebCore/loader/LinkLoader.cpp#L239-L24

Je ne sais pas si nous pouvons activer mediaPreloadingEnabled sur safari en changeant une configuration.

6
jun