我开发了一个带有内置脚本的.htm文档,用于运行程序。在谷歌浏览器中,该程序运行正常,但我得到了一个beta测试投诉,它在firefox 14.01或opera上无效。在使用firefox 14.01测试时,我可以确认它不起作用(我认为歌剧是相同的)。我不能坚持让观众升级他们的浏览器,因为这应该是广泛兼容的。
稍微跟踪一下这个问题,我安装了Firebug,在点击Javascript按钮第一次生成坐标时,它工作了(清楚地显示功能已定义并存在),但第二次,Firebug抱怨说:
"ReferenceError: GenerateCoord is not defined".
如果它只是在生成(加密)坐标(因此调用GenerateCoord,假定为'undefined')之后才这样做,那就没那么具有讽刺意味了。
如果查看代码,可以清楚地看到函数GenerateCoord在调用之前已经明确定义。我会说firefox有一个'onclick'问题,但是它引发了一个问题,为什么它在我第一次点击它时工作(通过'onclick'调用GenerateCoord)而不是第二个?
重新加载文件允许按钮第一次工作,而第一次只能工作。令我感到困惑的是firefox如何调用一次函数,然后说下一次是未定义的。我在这里错过了什么吗?
可在此处查看Javascript和HTML代码:
-
如何解决问题,是否有一个更简单的解决方案,而不是重写代码以避免onclick(这似乎在某些情况下有效,但在其他情况下无效)?
答案 0 :(得分:2)
问题是使用 document.write 会覆盖整个HTML页面,从而无意中删除了 GenerateCoord 脚本。我建议将链接附加到文档(在 ShowTarget 中),而不是尝试重写它。
例如,有一个容器元素,其中链接应为:
<div id="links_container"></div>
然后附加链接,使用:
document.getElementById('links_container').innerHTML = Link;