Rel PreRender/PreFetch,它是否执行JS?

Tom*_*len 8 javascript prefetch preloading prerender

<!—Firefox Prefetching -->
<link rel="prefetch" href="http://www.example.com/page2.html">

<!—Chrome Prefetching -->
<link rel="prerender" href="http://www.example.com/page2.html">
Run Code Online (Sandbox Code Playgroud)

如果我在页面上使用Javascript进行预呈现/预取(例如Google Analytics JS),那么prerender/prefetch会在页面上执行Javascript吗?或者它是否会延迟任何JS的执行,直到用户实际请求页面为止?

Tom*_*len 7

我刚刚对此做了一些研究:

Prefetch 将加载顶级资源,通常只是HTML页面

Prerender也将获取子元素,并将执行Javascript代码.使用Page Visibility API,我们可以确定加载页面的当前可见性状态.

所以答案是肯定的,只要用户在Chrome上并且正在使用预渲染,它就会执行JS.此外,当前版本的Google Analytics充分利用了页面可见性API,因此统计数据不会出现偏差,但是,由于未正确处理预渲染的情况,很可能会出现很多代码存在偏差.