Javascript+HTA,重新加载iframe并保持滚动位置
Javascript+HTA, reload iframe and keep scroll position
很久以前我创建了一个帐户,但我从未真正使用过它,因为我总是设法在已经解决的线程中找到问题的答案。因此,这是自从我从事当前计划以来我第一次无法找到有关 SO 的有效答案。不过,如果我只是错过了,请对我好一点^^
一些上下文可以解释为什么我无法应用任何给定的解决方案,尽管存在很多关于此的线程......我正在做:
- 一个 HTA 接口
- 使用 iframe 到本地文本文件
- 还有一个 link 到我想用来每 500 毫秒刷新一次 iframe 的 js 文件。
目标是聊天;人们可以在文本文件上书写,它会自动出现在 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>
很久以前我创建了一个帐户,但我从未真正使用过它,因为我总是设法在已经解决的线程中找到问题的答案。因此,这是自从我从事当前计划以来我第一次无法找到有关 SO 的有效答案。不过,如果我只是错过了,请对我好一点^^
一些上下文可以解释为什么我无法应用任何给定的解决方案,尽管存在很多关于此的线程......我正在做:
- 一个 HTA 接口
- 使用 iframe 到本地文本文件
- 还有一个 link 到我想用来每 500 毫秒刷新一次 iframe 的 js 文件。
目标是聊天;人们可以在文本文件上书写,它会自动出现在 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>