bug 反馈
By shiqiren
at 2015-08-08
1人收藏 • 4733人看过
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
我对这个编辑器不熟悉,调试是知道在异步刷新后,对象清空了的问题,但不知道如何改