Как загружать сайты из списка поочередно в браузер - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть монитор в моем офисе, и мне нужно отображать различные графики из разных источников.Есть index1.html, index2.html и index3.html.

На каждой html-странице используются разные css-файлы, поскольку html-файлы загружают разные iframes с разными графиками и размерами 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"

}

Ответы [ 4 ]

0 голосов
/ 21 февраля 2019

Если вам нужна эта функциональность только в пользовательском интерфейсе, вы можете использовать setInterval из javascript , чтобы добиться того, что вам нужно, я привел здесь простой пример.Дайте мне знать, если вам нужна какая-либо информация о режиме.

Для полного рабочего решения клонируйте этот репозиторий.

GIT URL: 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>
0 голосов
/ 21 февраля 2019

Вы должны быть в состоянии сделать это, используя 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>

Надеюсь, это полезно

0 голосов
/ 21 февраля 2019

Вы можете создать 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>
0 голосов
/ 21 февраля 2019

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

Надеюсь, это ответит на ваш вопрос !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...