我正在通过构建一个非常基本的基于web的聊天应用程序来教自己javascript。
聊天消息被发布到web服务器。HTML聊天客户端定期轮询web服务器以下载任何新消息。
聊天消息使用dojo网格显示。
我的问题是我不能滚动网格到最后一条消息。我试过使用scrollToRow,但它不起作用。
javascript代码在这里,=>
<html>
<head>
<style type="text/css">
@import "./dojoroot/dojo/resources/dojo.css";
@import "./dojoroot/dijit/themes/tundra/tundra.css";
@import "./dojoroot/dojox/grid/resources/Grid.css";
@import "./dojoroot/dojox/grid/resources/tundraGrid.css";
.input {
width: 100%;
padding: 0;
text-align: justify;
}
.dojoxGridHeader {
display: none;
}
</style>
<script language="JavaScript" src="./dojoroot/dojo/dojo.js" djConfig="isDebug: false, parseOnLoad: true">
</script>
<script type="text/Javascript">
dojo.require("dojo.parser");
dojo.require("dojo.dom-style");
dojo.require("dojox.grid.DataGrid");
dojo.require("dojo.data.ItemFileWriteStore");
dojo.require("dijit.layout.ContentPane");
var chatData={items:[]};
var chatStore=new dojo.data.ItemFileWriteStore({data:chatData});
var chatLayout=[[{'name':'Sender','field':'sender','width':'10%'},
{'name':'Message','field':'message','width':'90%'}]];
var chatRow=0;
</script>
</head>
<body>
<div align="center">
<div dojoType="dijit.layout.ContentPane" sizeMin="10" sizeShare="10">
<div id="gridDiv" style="text-align:left; border: 1px solid #aaa; width:98%; height:80%; overflow:auto;">
</div>
</div>
<script type="text/javascript">
var grid=new dojox.grid.DataGrid({id:'grid',
store:chatStore,
structure:chatLayout,
rowSelector:'0px'});
grid.placeAt("gridDiv");
grid.startup();
setInterval(listenToServer,250);
function listenToServer() {
dojo.xhrGet({
url: "http://localhost:8080/ChatProject/ListenToServer",
handleAs: "json",
load: function(data) {
if (data!=null) {
if (data.message!="") {
var myNewItem = {sender: data.sender, message: data.message};
chatRow++;
// Insert the new item into the store:
// (we use store3 from the example above in this example)
chatStore.newItem(myNewItem);
chatStore.save();
var lastRow=grid.store._arrayOfAllItems.length-1;
grid.scrollToRow(lastRow);
}
}
}
});
}
</script>
</body>
</html>网格不会向下滚动到最后一条消息。
任何帮助都将不胜感激。
谢谢。
詹姆斯。
发布于 2014-01-11 17:24:40
经过多次实验,我发现了以下问题:
随着这两个变化,滚动开始工作(几乎)。
此时,我在dataGrid => https://bugs.dojotoolkit.org/ticket/10487中遇到了这个bug。
在这一点上,我继续前进,停止使用dataGrid!
https://stackoverflow.com/questions/20940481
复制相似问题