我的办公室里有显示器,我需要显示来自不同来源的不同图表。有index1.html
,index2.html
和index3.html
。
每个html页面使用不同的css文件,因为html文件加载具有不同图形和iframe尺寸的不同iframe。
我希望有一个脚本,该脚本会在浏览器中加载index1.html
,并在60秒后加载index2.html
,并在60秒后再次加载index3.html
。
这可以一直运行到用户杀死脚本为止。我该如何实现?您会推荐python或bash脚本,还是JavaScript?
while(true){
firefox index1.html
sleep 60
#DISPLAY=:0.0 wmctrl -c "Firefox"
firefox index2.html
sleep 60
#DISPLAY=:0.0 wmctrl -c "Firefox"
firefox index3.html
sleep 60
#DISPLAY=:0.0 wmctrl -c "Firefox"
}
答案 0 :(得分:0)
有几种方法可以做到这一点。 Python具有a built-in module called webbrowser
,可在您的默认网络浏览器中打开文件或URL:
import webbrowser
import time
filelist = ["index1.html", "index2.html", "index3.html"]
for file in filelist:
webbrowser.open(file,new=2)
time.sleep(60)
我只是通过将filelist
替换为一些本地HTML文件的完整路径来进行尝试,并且对我有用。
如果要使用默认浏览器以外的浏览器,也可以进行设置。例如:
firefox_path = r"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
webbrowser.register('firefox', None, webbrowser.BackgroundBrowser(firefox_path), 1)
webbrowser.get('firefox').open("index.html", new=2)
答案 1 :(得分:0)
Python应该为您工作。
如果您可以将文件名存储在列表中,然后使用time.sleep()
对其进行遍历,则将可以正常工作。
import webbrowser
import os
import time
# Replace the absolute_path with actual ABSOLUTE PATH of the file
file_list = ["absolute_path/index1.html","absolute_path/index2.html","absolute_path/index3.html"]
while (True):
for a_file in file_list:
webbrowser.open('file://' + os.path.realpath(a_file))
time.sleep(60) # 60 seconds delay
file_list = [] # Empty file_list in order to avoid opening infinite tabs
希望这能回答您的问题!
答案 2 :(得分:0)
您应该能够使用javascript和jquery做到这一点。
<div id="content">
</div>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
$( document ).ready(function() {
$("#content").load("index1.html");
});
var counter = 1;
var i = setInterval(function(){
switch(counter){
case 0:
$("#content").load("index1.html");
break;
case 1:
$("#content").load("index2.html");
break;
case 2:
$("#content").load("index3.html");
break;
}
counter++;
if(counter == 3) {
counter = 0;
}
}, 60000);
</script>
我希望这是有用的
答案 3 :(得分:0)
您可以使iframe占据整个页面,并使用递归JS函数永久性地遍历所有报告页面。
只需更新 frames 数组以添加/删除页面,并使用 setTimeout 函数的第二个参数来调整计时
function updateFrames(i)
{
var frames = ['https://example.org/index1.html', 'https://example.org/index2.html', 'https://example.org/index3.html'];
document.getElementById('iframe').src = frames[i];
i++; if (i >= frames.length) { i = 0 };
setTimeout(function(){
updateFrames(i);
}, 60000);
}
window.onload = updateFrames(0);
<iframe id="iframe" style="height: 100vh; width: 100vw;" src=""></iframe>
答案 4 :(得分:0)
如果仅在UI中需要此功能,则可以使用 javascript 中的 setInterval 来实现所需的功能,在此我实现了一个简单的示例。让我知道您是否需要任何模式详细信息。
要获取完整的工作解决方案,请克隆此存储库。
GIT网址:https://github.com/helloritesh000/how-to-load-websites-from-a-list-alternately-to-browser
<!doctype>
<html>
<body>
<iframe id="ifrm" src="" width="300" height="300"></iframe>
<script type="text/javascript">
var arraySites = ["index3.html", "index2.html", "index1.html"];
var counter = 0;
var interval = setInterval(function(){ var url = arraySites.pop(); console.log(url); LoadIframe(url);} , 10*1000);
function LoadIframe(arrIndex)
{
if(arrIndex != null && arrIndex != undefined && arrIndex != '')
document.getElementById('ifrm').src = arrIndex;
else
clearInterval(interval);
}
</script>
</body>
</html>