Javascript+HTA,重新加载iframe并保持滚动位置

Javascript+HTA, reload iframe and keep scroll position

很久以前我创建了一个帐户,但我从未真正使用过它,因为我总是设法在已经解决的线程中找到问题的答案。因此,这是自从我从事当前计划以来我第一次无法找到有关 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>