如何将列表中的网站交替加载到浏览器

时间:2019-02-21 15:52:09

标签: javascript python bash

我的办公室里有显示器,我需要显示来自不同来源的不同图表。有index1.htmlindex2.htmlindex3.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"

}

5 个答案:

答案 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>