Как пилотировать стороннюю библиотеку javascript, работающую на пользовательском элементе HTML из компонента Angular 6?

Моя цель - инкапсулировать существующий видеопроигрыватель javascript как отдельный модуль Angular 6.

Плеер встраивается в веб-страницу с помощью настраиваемого HTML-элемента (известного в дальнейшем как <media-player>), который принимает некоторые атрибуты параметров. Его логика находится в одном проприетарном (минифицированном) файле Javascript, который предоставляет методы (воспроизведение / остановка и т. д.), Которые могут быть применены к ссылке на DOM этого HTML-элемента. Пример :

HTML

<html>
    <head>
        <script type = "text/javascript" src = "./lib/media-player.js"></script>
   </head>
    <body>
        <media-player id = "my_player" media='{"url":"http://example.com"}' />
    </body>
</html>

Javascript

var player = document.getElementById('my_player');
player.play();
player.stop();

Я предполагаю, что библиотека работает, ища этот конкретный элемент в DOM после загрузки страницы и визуализируя на его месте кучу материалов для воспроизведения видео, при этом JS API реализуется как набор методов расширения на этом элемент.

Моя проблема связана с отсутствием описания какого-либо прямого метода или переменной. Большинство онлайн-решений относятся к раскрытию некоторых известных методов или переменных базовой библиотеки с помощью оператора declare var MyLibrary: any;.

Поправьте меня, если я ошибаюсь, но в данном случае это невозможно, потому что такого объекта, доступного для объявления, нет, а библиотека, с моей точки зрения, в значительной степени является черным ящиком. Обратный инжиниринг библиотеки на данном этапе невозможен.

Есть ли шанс, что вы можете назвать библиотеку? Это не должно быть слишком сложно, нужно просто правильно обернуть вещи и грамотно использовать @ViewChild и nativeElement.

briosheje 26.10.2018 17:47

К сожалению, он не является открытым / общедоступным. Его производит местная компания, специализирующаяся на решениях для воспроизведения видео. Я начну изучать упомянутые вами ключевые слова, так как в настоящее время я плохо понимаю, что они представляют. Спасибо.

Kalex 26.10.2018 18:05

Обычно в этой библиотеке есть какой-то init или что-то еще. Самый умный подход, которому вы, вероятно, можете следовать: 1) Создайте компонент. 2) Создайте соответствующий HTML. 3) Создайте экземпляр настраиваемой библиотеки в NgOnInit. 4) Выставить нативный элемент через # и @ViewChild. 5) Получите доступ к собственному элементу. 6) Прибыль.

briosheje 26.10.2018 18:12
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
27
0

Другие вопросы по теме