小编Iñi*_*bel的帖子

父目标子上的addEventListener事件

我正在做一个小应用程序只是为了学习ES6的东西,我发现了addEventListener和父/子事件的问题.

我有一个菜单,包含几个具有图像(化身)和一些文本的div.每个div都有一个data-id属性来获取被点击的元素id,我在每一行都放了一个addEventListener:

<div class="row" data-id="1">
  <img src="avatar" />
  Lorem ipsum
</div>
...
Run Code Online (Sandbox Code Playgroud)

和js:

const rows = document.querySelectorAll('.row');
rows.forEach(row => row.addEventListener('click',selectRow));

function selectRow(e){
  var row = e.target;
  alert(row.dataset.id);
}
Run Code Online (Sandbox Code Playgroud)

当我点击头像时会出现问题.它会触发click事件,但目标是img元素,而不是div,所以我无法获取data-id属性.

我已经尝试了很多方法(比如这个),但它可以防止在点击头像时触发事件,因此不会在解决方案上,因为头像是行的一部分并且可能会被点击:S

我设置了一个jsfiddle来显示我的问题.任何帮助,将不胜感激 :)

https://jsfiddle.net/igorosabel/o64b404y/1/

javascript javascript-events

6
推荐指数
1
解决办法
6957
查看次数

Angular PWA 错误站点无法安装:未检测到匹配的 Service Worker

我有一个网站(Angular 9.0.1),我添加了该@angular/pwa包以将其转换为 PWA,但它不起作用。

该网站在生产网站上,但现在在https://new.indomablestore.com上有测试数据

我已检查所需文件 ( manifest.webmanifest, ngsw.json, ngsw-worker.js) 是否位于根文件夹中。我已检查 index.html 文件是否正确指向清单,并显示在 Chrome DevtoolsApplication选项卡上。

但在该Installability部分它说:没有检测到匹配的服务工作者。您可能需要重新加载页面,或检查当前页面的 service worker 是否还控制清单中的起始 URL。

我还检查了该app.module.ts文件是否包含以下行:

ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production })

我没有修改任何 PWA 文件,我让 Angular CLI 构建它们。

任何帮助将不胜感激,因为该网站即将上线,这是我名单上的最后一件事:)

谢谢!

更新:清单如下所示:

  "name": "Indomable",
  "short_name": "Indomable",
  "theme_color": "#1976d2",
  "background_color": "#fafafa",
  "display": "standalone",
  "scope": "/",
  "start_url": "/",
  "icons": [
    ...
  ]
}
Run Code Online (Sandbox Code Playgroud)

Service Worker 在 app.module 上注册如下:

@NgModule({
  declarations: [
    AppComponent,
    ...PAGES,
    ...COMPONENTS,
    ...PIPES
  ],
  imports: …
Run Code Online (Sandbox Code Playgroud)

google-chrome-devtools progressive-web-apps angular angular-pwa

4
推荐指数
1
解决办法
1172
查看次数