我编写了一个页面,使用带有 onclick 的按钮来调用函数,作为我的学生的一组练习问题和答案的一部分。 它自 7 月以来一直有效,至少到 9 月 5 日星期五没有出现任何问题。 今天,这些按钮在 Chrome 中根本无法使用,我也无法弄清楚为什么。 它们确实可以在 IE 中继续正常运行。
我已经发布了我能编写的最简单的代码,但在下面不起作用。 这非常简单,老实说我认为很好。 如果我将整个内容粘贴到 JSFiddle 的 HTML 框中,它似乎可以工作,但如果我尝试分离脚本,它不会执行任何操作。 我不知道这是因为它坏了还是因为我错误地分离了它。
我在尝试调试它时遇到了麻烦,主要是因为 Google 协作平台将您的工作完全重写为其自己的格式,如果不是由硅制成,则或多或少无法读取。 当我加载它并尝试单击时,我确实遇到了异常:
Uncaught Error: shouldn't happen: ES5/3 object passed to makeDOMAccessible
但我绝对没有运气弄清楚那里发生了什么,或者这是否真的是问题所在。
我读过很多关于 Google 协作平台对 Javascript 挑剔的文章,我不知道问题是出在协作平台还是 Chrome 上还是两者一起还是什么,但我想解决这个问题,因为我和我的大部分学生主要使用 Chrome。
下面的所有代码都将进入插入的 HTML 框中,仅供参考。
如果结果是重复的,我们深表歉意;我找了好久没找到解决办法。
<html>
<body>
<button onclick="Check()">Push Me</button>
<script>
function Check() {
alert("It worked");
}
</script>
</body>
</html>
任何有关修复我所拥有的内容(如果它甚至损坏了)或以适用于协作平台和 Chrome 的简单方式重做它的建议都将受到欢迎。 预先感谢。
这是一个完整的页面,以前可以在 Chrome 中使用,但现在不再。 当您按下各个按钮时,它会显示表格的行。
编辑:这似乎适用于旧版本的 Chrome。 我想我需要访问 Chrome 论坛来解决这个问题。
epascarello 建议的解决方法,使用 addEventListener 代替 onclick 事件,似乎有效。由于某种原因,我仍然无法让示例中的警报窗口正常工作(违反网站政策?),但我想要的实际功能(设置段落对象的innerHTML)正在正常工作。
这似乎是 Google 协作平台和 Chrome v.37 之间的问题。 希望这个问题能在不久的将来得到解决。
这是一个正常工作的等效代码示例。
<html>
<body>
<button id="AnswerButton1">Check Answer 1</button>
<p id="Answer1"></p>
<script>
document.getElementById("AnswerButton1").addEventListener("click",function(){Answer(1);});
function Answer(n){
document.getElementById("Answer"+n).innerHTML = "Answer to Number 1";
}
</script>
</body>
</html>
感谢那些提供帮助的人。
编辑:几年前忘记真正回答,并且正在回顾旧问题以寻找未回答的事情。 清理干净。