0

我开发了一个带有内置脚本的 .htm 文档,供 javascript 运行程序。在 google chrome 中,该程序运行良好,但我收到了一个 beta 测试投诉,称它在 firefox 14.01 或 opera 上不起作用。在使用 firefox 14.01 进行测试时,我可以确认它不起作用(我假设歌剧是相同的)。我不能坚持让观众升级他们的浏览器,因为这应该是广泛兼容的。

对问题进行了一些跟踪,我安装了 Firebug,它在第一次单击 Javascript 按钮生成坐标时,它起作用了(清楚地显示该函数已定义并存在),但第二次,Firebug 抱怨说:

"ReferenceError: GenerateCoord is not defined".

如果它只在生成(加密)坐标(因此调用应该是“未定义”的 GenerateCoord)之后才这样做,这不会那么具有讽刺意味。

如果查看代码,可以清楚地看到函数 GenerateCoord 在调用之前已经明确定义。我会说firefox有一个'onclick'问题,但它提出了一个问题,为什么它在我第一次点击它时起作用(通过'onclick'调用GenerateCoord)而不是第二次?

重新加载文件允许按钮第一次工作,并且仅在第一次工作。我很困惑firefox如何一次调用一个函数,然后它说下一次是未定义的。我在这里错过了什么吗?

Javascript 和 HTML 代码可以在这里查看:

http://pastebin.com/4qykTfEW

-

我该如何解决这个问题,是否有比重写代码以避免 onclick 更简单的解决方案(这似乎在某些情况下有效,但在其他情况下无效)?

4

1 回答 1

2

问题是使用document.write会覆盖整个 HTML 页面,从而无意中删除了GenerateCoord脚本。我建议将链接附加到文档(在ShowTarget中),而不是尝试重新编写它。

例如,有一个容器元素,链接应该是:

<div id="links_container"></div>

然后附加链接,使用:

document.getElementById('links_container').innerHTML = Link;
于 2012-08-19T18:19:00.733 回答