微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我很久以前创建了一个帐户,但我从未真正使用过它,因为我总是设法在已解决的线程中找到问题的答案。所以,这是我第一次在我目前的程序上工作,我无法找到关于 SO 的有效答案。但是,如果我只是错过了,请对我好点^^

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

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

目标是聊天;人们可以在文本文件上书写,它会自动出现在 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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。