问题描述
我很久以前创建了一个帐户,但我从未真正使用过它,因为我总是设法在已解决的线程中找到问题的答案。所以,这是我第一次在我目前的程序上工作,我无法找到关于 SO 的有效答案。但是,如果我只是错过了,请对我好点^^
一些上下文可以解释为什么我无法应用任何给定的解决方案,尽管存在很多关于此的线程......我正在做:
目标是聊天;人们可以在文本文件上书写,它会自动出现在 HTA 界面上。
坦率地说,我对 JS 一无所知。所以我在这里找到了那段代码来刷新 iframe。
window.setInterval(function() {
document.getElementById('chatBox').contentwindow.location.reload();
},500);
它可以工作,但是在刷新 iframe 时,它会滚动回顶部;正如您可以猜到的那样,这使聊天变得不可读。我在 SO 上阅读的许多解决方案对我不起作用,也许是因为它不适合这种刷新 iframe 或 HTA 的方式,或者我对 js 太笨了,不知道如何使它们工作.
如果有人有我可以复制和使用的解决方案,即使我不明白我在做什么 - 它在智力上不会很令人满意,但至少我可以专注于完成我的界面 :) 谢谢很多!
解决方法
如果您通过从文本文件更新innerHTML 来刷新iframe,而不是重新加载,它不会更改滚动位置。下面是一个 HTA 示例:
<!DOCTYPE html>
<meta http-equiv="x-ua-compatible" content="ie=9">
<html>
<head>
<script>
function Refresh() {
var Iframe = document.getElementById("chatbox").contentWindow;
window.setInterval(function() {
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fh = fso.OpenTextFile(".\\Chat.txt",1);
var FileContents = fh.AtEndOfStream ? "" : fh.ReadAll();
fh.Close();
Iframe.document.body.innerHTML = "<pre>" + FileContents + "</pre>"
},500);
}
</script>
<style>
#chatbox {height:30em;}
</style>
</head>
<body onload="Refresh()">
<iframe id=chatbox title="Chat Box">
</iframe>
</body>
</html>