Web应用程序
它是一个基于网络的查找地图游戏网站,使用Angular 4构建。它有各种选择游戏模式,并根据选择模式运行,也可以选择/选择或只选择一个区域,然后填充国家名称以查找每个周期。
什么应该是正确的行为
*所有数据都来自SVG文档
游戏模式
这是一个处理click事件的部分代码
public handleClickEvent(event: any): void {
if (this.gameStarted && event.path && event.path.length > 0) {
const country = event.path[0].id;
if (
country !== null &&
country !== 'europeanMap' &&
country !== 'image97'
) {
this.runGameLogic(country);
}
}
}
游戏运行逻辑
// The user clicked on the map, so run game logic on that
private runGameLogic(selectedCountryName: string): void {
const index = this.selectedCountries.findIndex(country => {
return country.name === this.countryToFind.name;
});
this.selectedCountries[index].selected = true;
// Only run logic if the game has started, there is a valid countryName object, and that object is not equal to an empty string
if (selectedCountryName && selectedCountryName !== '') {
if (selectedCountryName === this.countryToFind.name) {
this.correctAnswerLogic(index);
this.selectedCountries[index].correct = true;
} else {
this.incorrectAnswerLogic(index, selectedCountryName);
}
}
}
我需要弄清楚如何制作跨浏览器功能的应用程序或浏览器支持我的应用程序的可能解决方案。
谢谢你的帮助 :)
我得到了Firefox浏览器的解决方案。原因是Firefox没有event.path
属性,它没有触发点击事件,虽然我发现这个event.composedPath()
它适用于所有主要的浏览器除了Edge / IE更多细节在Mozilla Documentation。这是一个在Firefox上运行正常的实际代码。
public handleClickEvent(event: any): void {
const path = event.path || event.composedPath();
if (this.gameStarted && path && path.length > 0) {
const country = path[0].id;;
if (
// some conditions
) {
// do something
}
}
}
我仍然需要在Edge / IE浏览器中解决。谢谢