Просмотр сайтов в автономном режиме - как обойти ненужные манипуляции ajax и jquery? - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь просмотреть веб-страницу в автономном режиме. Страница очень проста.Он имеет видеопроигрыватель JavaScript, который взаимодействует с элементом HTML5 video .Элемент video указывает URL для видео. Итак, я просто пытаюсь воспроизвести видео в автономной сохраненной версии страницы.

Я загрузил страницу с помощью Firefox и вижу, что все ресурсы сохраняются в автономном режиме .Я также настроил локальный веб-сервер для просмотра страницы как https://localhost/somepage.html.

В HTML проигрыватель видео начинается с

<div class="jp-jplayer" id="jp_jplayer_1" style="width: 640px; height: 480px;">
    <img id="jp_poster_1" src="http://localhost/files/vidtb.jpg" style="width: 640px; height: 480px; display: inline;">
    <video id="jp_video_1" preload="none" style="width: 0px; height: 0px;">
        <source src="http://localhost/files/vid.mp4" type="video/mp4">
    </video>
</div>

В Chrome Developer ToolsКонсоль Я не вижу никаких ошибок.

После ряда проверок / манипуляций jquery, а также некоторого javascript из приложения (все, что сохраняется в автономном режиме), приведенный выше HTML изменяется на

<div class="jp-jplayer" id="jp_jplayer_0" style="width: 480px; height: 270px;">
    <img id="jp_poster_0" style="width: 480px; height: 270px; display: none;">
    <video id="jp_video_0" preload="none" style="width: 0px; height: 0px;">
    </video>
</div> 

Прикольные вещи.

Итак, я попробовал отладку, и это очень сложно, потому что в Chrome я даже не могу выбрать атрибут источника видео, чтобы добавить часы, потому что минуту япросмотреть в инспекторе, элемент источника был удален.

Я установил несколько точек останова и обнаружил, что в этой функции:

$(".player.video").each(function (t, e) {
        var n = $(e), i = parseInt(get_html_attribute(n, "width")) || 480, o = parseInt(get_html_attribute(n, "height")) || 270, a = get_html_attribute(n, "source"), r = get_html_attribute(n, "poster"), s = get_html_attribute(n, "caption"), l = n.parents("component").first().hasClass("float-center"), c = {
            play_top: (o - 60) / 2,
            height: o,
            width: i
        }, u = "true" === get_html_attribute(n, "fullscreen");
        l ? c.play_left = 27 : c.play_left = (i - 60) / 2, n.html(bm.render_template("media", "video", c));
        var d = {poster: r, m4v: a};
        s && (d.track = s), u && (d.allowFullScreen = !0), n.find(".jp-jplayer").jPlayer({
            ready: function () {
                $(this).jPlayer("setMedia", d)
            },
            play: function () {
                $(this).jPlayer("pauseOthers")
            },
            solution: "flash, html",
            supplied: "m4v",
            swfPath: "/lib",
            cssSelectorAncestor: "#" + e.id,
            size: {width: i + "px", height: o + "px", cssClass: ""},
            nativeVideoControls: {
                msie: /msie [0-6]/,
                ipad: /ipad.*?os [0-4]/,
                iphone: /iphone/,
                ipod: /ipod/,
                android_pad: /android [0-3](?!.*?mobile)/,
                android_phone: /android.*?mobile/,
                blackberry: /blackberry/,
                windows_ce: /windows ce/,
                webos: /webos/
            }
        }).bind($.jPlayer.event.play, function () {
            $(this).jPlayer("pauseOthers")
        })
    })

источник видео в конечном итоге удаляется, но это не ясногде и почему.

Я думаю, что происходит, если приложение предполагает наличие некоторых необходимых вызовов ajax и что доступ к видео осуществляется с помощью учетных данных CORS.Или, может быть, что-то связанное с заголовками и javascript, которые ищут заголовки, ожидаемые в онлайн-браузере, или ищут различные заголовки ответа сервера.Но поскольку я скачал видео, мне не нужны вызовы AJAX, проверка учетных данных и т. Д. И т. Д. По сути, мне нужно удалить все приложения, вызывающие функциональность / jquery.Если я полностью удалю сценарии, это никуда меня не приведет, поскольку воспроизведение видео выполняется с помощью сценариев.

Итак ... что бы вы сделали?Как бы вы пошли на отслеживание частей кода, которые вызывают это?Эта проблема сразу же заставляет вас задуматься о каком-то типичном виновнике, которого я мог бы проверить?

Спасибо, и извините, я не могу быть более точным в отношении проблемы.Я - гитарист, который знает немного кодирования, но пытаться разгадать эту проблему (среди тысяч лжи javascript) выходит за рамки моего опыта программирования.Я могу все исправить, как только узнаю проблему, но это этап устранения неполадок, который оказывается безумным.

С уважением

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