我有一个运营服务人员的网站。当我使用“添加到主屏幕”(独立模式)将网站安装为PWA应用程序时,该站点运行正常,除了任何target="_blank"
链接在服务器端导致重复请求-两个同时请求,但只有一个窗口打开。即使服务工作者没有缓存逻辑(提取处理程序为空),也会发生这种情况
我制作了一个最小的repro应用程序,可以在以下位置复制该问题:
/index.html
/page.html
/service-worker.js
/manifest.json
index.html:
<head><link rel="manifest" href="/manifest.json"></head>
<body>
<a href="/page.html" target="_blank">CLICK ME</a>
<script>navigator.serviceWorker.register('/service-worker.js', { scope: '/' });</script>
</body>
manifest.json:
{
"background_color": "#FFFFFF",
"description": "Repro application",
"display": "standalone",
"name": "Repro application",
"short_name": "Repro application",
"start_url": "/index.html",
"theme_color": "#FFFFFF"
}
service-worker.js:
(function () {
'use strict';
self.addEventListener('fetch', function (event) { });
self.addEventListener('activate', function (event) { });
}());
也完全没有获取事件发生,或者仅在获取事件返回网络获取承诺的情况下发生(因此默认的浏览器行为)
page.html内容无关紧要(如果不存在,则只是404的两倍)
只有target =“ _ blank”链接两次访问服务器,“ _ self”正常运行。有什么主意如何找出造成额外点击的原因吗?