在使用JQuery 3.3.1的firefox 61.0.2 x64中,出现以下控制台错误;
TypeError:window [(“ check” + key)]不是函数
但是实际功能正常运行,并且仅在FF中引发此错误。但这具有破坏脚本的作用,并且不会以当前状态在该行下运行任何代码。
/* Save Check Box State for session */
var checkboxValues = JSON.parse(sessionStorage.getItem('checkboxValues')) || {},
$checkboxes = $("#checkbox-container :checkbox");
$checkboxes.on("change", function(){
$checkboxes.each(function(){
checkboxValues[this.id] = this.checked;
});
sessionStorage.setItem("checkboxValues", JSON.stringify(checkboxValues));
});
$.each(checkboxValues, function(key, value) {
$("#" + key).prop('checked', value);
if (value === true )
{
window['check'+key]();
}
});
check+key
返回类似checkautoRefresh()
的想法,即在页面上重新加载仍选中的所有复选框并调用(重新)函数。
令人反感的功能
function checkautoRefresh() {
if ($("#autoRefresh").is(":checked")) {
reloader=setTimeout("window.location.reload();", 30000);
}
}
function autoRefresh(cb) {
if (cb.checked) {
reloader=setTimeout("window.location.reload();", 30000);
} else {
clearTimeout(reloader);
}
}
我用完整的Java脚本和html复选框做了一个小提琴here。如果设置了复选框,请打开控制台并重新加载页面,您应该会收到错误消息,但是刷新功能将按预期运行。在IE中,没有错误,并且该部分下面的所有脚本都可以运行,并且我不记得FF的早期版本中存在此错误(尽管我无法立即返回所有版本并进行检查。)< / p>
我需要找到一种解决方法,或者是做我正在做的事情的更好方法,其中保存了复选框状态,然后在重新加载时调用,并且再次调用了函数以应用任何过滤器/设置等。此代码是一个有效的摘录从更大的页面中提取,该页面从数据库中提取数据以供用户显示。
我的JavaScript文件已加载到我的<head>
代码的php
部分中。
答案 0 :(得分:0)
最后,移动;
$.each(checkboxValues, function(key, value) {
$("#" + key).prop('checked', value);
if (value === true )
{
window['check'+key]();
}
到我已加载文件的底部似乎已解决了该问题。如果在.load
或.ready
上调用代码,小提琴仍然会抛出相同的错误,我不知道为什么它可以正常工作。我还能够打开2个Firefox控制台,其中一个会引发错误,而另一个不会全部来自相同的网址...