【问题标题】:Javascript+HTA, reload iframe and keep scroll positionJavascript+HTA,重新加载 iframe 并保持滚动位置
【发布时间】:2023-07-30 14:15:01
【问题描述】:

我很久以前创建了一个帐户,但我从来没有真正使用过它,因为我总是设法在已经解决的线程中找到我的问题的答案。因此,这是自从我从事当前程序以来,我第一次无法在 SO 上找到有效的答案。但是,如果我只是错过了它,请对我好^^

一些上下文可以解释为什么我无法设法应用任何给定的解决方案,尽管存在许多线程...我正在做:

  • HTA 接口
  • 使用 iframe 到本地文本文件
  • 还有一个 js 文件的链接,我想用它来每 500 毫秒刷新一次 iframe。

目标是聊天;人们可以在文本文件上书写,它会自动出现在 HTA 界面上。

坦率地说,我对 JS 一无所知。所以我在这里找到了刷新 iframe 的那段代码。

window.setInterval(function() {
    document.getElementById('chatbox').contentWindow.location.reload();
}, 500);

它可以工作,但是在刷新 iframe 时,它​​会滚动回顶部;如您所料,这使聊天变得难以阅读。我在 SO 上阅读的许多解决方案对我不起作用,可能是因为它不适合这种刷新 iframe 或 HTA 的方式,或者我对 js 太笨了,不知道如何使它们工作.

如果有人有一个我可以复制和使用的解决方案,即使我不明白我在做什么——这在智力上不会很令人满意,但至少我可以专注于完成我的界面 :) 谢谢很多!

【问题讨论】:

  • 只需要一点说明:有一个txt文件直接加载到iframe中,而那个iframe中根本没有html文档?
  • @Teemu html 文档里塞满了东西(包括其他 iframe),这个 iframe 只是其中的一部分 :)
  • 我只对那个特定的 iframe 感兴趣,#chatbox。引用已经正确,如果真的刷新了 iframe,那么 iframe 的确切src 是什么?
  • 框架通过<iframe id="chatbox" style="background-color:white;" src="../data/chatbox.txt" height="135" width="100%"></iframe>调用

标签: javascript html iframe hta


【解决方案1】:

如果您通过从文本文件更新 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>

【讨论】:

  • 非常感谢 LesFerch,这非常有效!你保存了我的聊天框 :)
最近更新 更多