You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codepen开发的Simon儿童游戏在Safari无功能问题求助

问题分析与解决思路

咱们先拆解你遇到的两个核心问题:

1. 为什么会出现 TypeError: undefined is not an object (evaluating 'safari.application.addEventListener')?

safari.application 是Safari浏览器扩展开发专属的API,只有在Safari扩展的沙盒上下文里才会存在。你的游戏是普通网页应用,在Safari的普通网页环境下访问这个对象,自然会得到undefined,调用它的addEventListener方法就会直接抛出类型错误。

2. 为什么添加了console.log("check")也没输出?

因为脚本执行到第一行的错误代码时,就直接抛出异常终止了,后续的代码(包括你的console.log)根本没机会运行。


具体解决步骤

  • 第一步:定位并处理错误代码
    找到你main.js第一行里的safari.application.addEventListener代码,判断它的用途:
    • 如果这段代码是你误加的(毕竟你的游戏是普通网页,不需要扩展API),直接删掉这段代码即可。
    • 如果是某些第三方库或者工具自动插入的,给它加上环境判断,确保只有在扩展环境下才执行:
      // 先检测safari.application是否存在,再执行相关逻辑
      if (typeof safari !== 'undefined' && safari?.application) {
        safari.application.addEventListener(/* 你的事件参数 */);
      }
      
  • 第二步:验证Safari的兼容性
    修复完这个错误后,测试游戏功能是否正常。Safari对部分JS特性(比如Web Audio API的细节、CSS动画前缀、DOM操作的时序)的支持和Chrome/Firefox略有差异,你可以:
    • 检查游戏里的音频播放、动画效果是否正常,必要时添加Safari专属的兼容代码;
    • 打开Safari的开发者工具(偏好设置-高级-显示开发菜单),查看是否有其他报错信息,逐一排查。

内容的提问来源于stack exchange,提问作者Scott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:38:41