html – 必须具有有效的`as`值

我正在尝试使用link 07的preload rel值预加载视频.

在我的index.html文件中,我将以下内容添加到头部:

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

在chrome中,这可以正常工作并预加载文件而不会出现问题.

当我在我的桌面或iPhone上的safari 11.3中打开页面时,我收到一个控制台错误消息:

must have a valid as value

根据包含有效值列表的文档的“what types of content can be preloaded”部分,我肯定使用正确的视频类型.

我在链接标签上检查了mdn documentation的移动safari预装选项,它显示了“兼容性未知”问号.我还检查了caniuse,它似乎表明,只要我的手机游戏版本是11.3我应该能够使用它.

手机和我的桌面都在11.3的safari,所以我不知道为什么我会收到这个错误.

任何想法/见解?

最佳答案 似乎webkit禁用了视频和音频文件的预加载.

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-L243

我不确定我们是否可以通过更改某些配置在safari上启用mediaPreloadingEnabled.

点赞