bug 反馈
By shiqiren
at 2015-08-08
1人收藏 • 5330人看过
Uncaught TypeError: Cannot read property 'contentWindow' of null
new.function.js?version=3.3.6:35
出现条件:当页面已经有编辑器后,再打开一个有编辑器的页面,就会出现
如:打开一个话题的详细页面后,再打开“发新帖”会出现
- 登录后方可回帖
new.function.js?version=3.3.6:286
Uncaught TypeError: Cannot read property 'Title' of undefined
如果回复话题,提交后,出现:
Uncaught TypeError: Cannot read property 'simpleupload' of undefined
ueditor.all.min.js?version=3.3.6:114
第一个bug的参考解决:
var ueditor_id='ueditor_0';
var frames=document.getElementsByTagName('iframe');
for(var i=0;i<frames.length;i++){
if(frames[i].id.indexOf('ueditor_')>-1){
ueditor_id=frames[i].id;
break;
}
}
document.getElementById(ueditor_id).contentWindow.document.body.onkeydown = function(Event){
CtrlAndEnter(Event, false);
};Thanks!
全站异步加载是十几天前花了半天时间改的,因为最近一直在驾校,所以一些没造成明显影响的Bug没有被及时检出,感谢反馈!
如果你有GitHub账号的话,不如把这些代码以pull request的方式合并到项目中,这样也可以在contributors中挂个名字。
https://github.com/lincanbin/Carbon-Forum/graphs/contributors
回复#5 @lincanbin :
你做过驾校的项目?
回复#4 @shiqiren :
NewForm是其实是一个Create New Topic的Form,我随手挑的一个当时认为比较合适的写法来命名,现在来看可能是历史遗留问题了。
回复#6 @shiqiren :
我准备在考驾照啊……
回复#7 @lincanbin :
把回复的form的name从reply改为NewForm是否会有未知影响?我看代码NewForm的使用频率很高
回复#9 @shiqiren :
最好不要,因为网站改成全异步后,理论上最好每个不同功能的页面都不要出现同样的命名,包括ID、Name、Function等等。
因为JavaScript也是以异步方式载入,并且常驻在Head标签中,随着打开的页面增加,载入的JavaScript也会逐渐增加最终达到一个稳定值,从而实现一个比较快的加载速度。
https://github.com/lincanbin/Carbon-Forum/blob/master/static/js/global.js#L141
异步载入静态资源的代码在这里:
//异步非阻塞加载JavaScript脚本文件
function loadScript(url, callback) {
var script = document.createElement("script");
script.id = md5(url);
script.type = "text/javascript";
if (script.readyState) { //IE
script.onreadystatechange = function() {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
callback();
}
};
} else { //Others
script.onload = function() {
callback();
};
}
script.src = url;
if(document.getElementById(script.id) == undefined){
document.getElementsByTagName("head")[0].appendChild(script);
}else{
callback();
//console.log(url);
}
}回复#10 @lincanbin :
所以NewForm只应该出现在新建话题页面吧,其他的地方,是还没改过来的
回复#11 @shiqiren :
特地使用了不同的命名,其他地方的命名应该也没大问题。
回复#12 @lincanbin :
已经测试出来,比如回复页面,会调用new.function.js的RecoverContents方法,正常情况应该调用reply.function.js的方法的,应该是异步的js出现了混乱吧
回复#13 @shiqiren :
对的,全异步造成了redefine function,其中一个函数应该改成不同的名字,全站异步后,不应该再出现有同样的function名。
回复#16 @lincanbin :
我的代码改动太大了。。。
回复#17 @shiqiren :
那还是我来改好了。
回复#18 @lincanbin :
如果回复话题,提交后,出现:
Uncaught TypeError: Cannot read property 'simpleupload' of undefined
ueditor.all.min.js?version=3.3.6:114
我对这个编辑器不熟悉,调试是知道在异步刷新后,对象清空了的问题,但不知道如何改