我正在做一个小应用程序只是为了学习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来显示我的问题.任何帮助,将不胜感激 :)
我有一个网站(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