PageSourceSearch

https://www.grenzgaengerroute.de/typo3conf/ext/skeleton/Resources/Public/Js/Default/82_pl_player.js?1707145171

js grenzgaengerroute.de collected 2026-09-30 12:20:32 UTC 4,152 bytes, 125 lines download raw bytes

1;(function ($, namespace) {
2    var $players = $('[data-youtube-player]'),
3        Player = {
4            players: []
5        };
6
7    Player.init = function () {
8        var tag = document.createElement('script');
9        tag.src = "https://www.youtube.com/iframe_api";
10
11        var firstScriptTag = document.getElementsByTagName('script')[0];
12        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
13
14        var stripURL = function (url) {
15            var regExp = /^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
16            var match = url.match(regExp);
17            if (match && match[2].length === 11) {
18                return match[2];
19            } else {
20                return url;
21            }
22        };
23
24        window.onYouTubeIframeAPIReady = function () {
25            $players.each(function (i) {
26                var $wrap = $(this).find('.js-banner-bg'),
27                    $player = $('<div/>').attr('id', 'youtubeplayer' + i),
28                    videoid = stripURL($(this).data('youtubePlayer')),
29                    settings = {
30                        videoId: videoid,
31                        height: '100%',
32                        width: '100%',
33                        playerVars: {
34                            autoplay: 1,
35                            color: 'white',
36                            controls: 0,
37                            disablekb: 1,
38                            fs: 0,
39                            iv_load_policy: 3,
40                            loop: 1,
41                            playlist: videoid,
42                            modestbranding: true,
43                            playsinline: 1,
44                            rel: 0,
45                            showinfo: 1
46                        },
47                        events: {
48                            'onReady': function (e) {
49                                Player.onPlayerReady(e, i, $wrap);
50                            },
51                            'onStateChange': function (e) {
52                                Player.onPlayerStateChange(e, i, $wrap);
53                            },
54                            'onError': Player.onPlayerError
55                        }
56                    };
57
58                $wrap.prepend($player);
59
60                Player.players[i] = new YT.Player('youtubeplayer' + i, settings);
61                Player.players[i]['done'] = false;
62            });
63        }
64    };
65
66    Player.vidRescale = function ($wrap, i) {
67        var $wrap = ($wrap) ? $wrap : $(window),
68            w = $wrap.width(),
69            h = $wrap.height();
70
71        if (w / h > 16 / 9) {
72            Player.players[i].setSize(w, w / 16 * 9);
73            $wrap.find('iframe').css({
74                'left': '0px',
75                'maxWidth': 'none'
76            });
77        } else {
78            Player.players[i].setSize(h / 9 * 16, h);
79            $wrap.find('iframe').css({
80                'left': -($wrap.find('iframe').outerWidth() - w) / 2,
81                'maxWidth': 'none'
82            });
83        }
84    };
85
86    Player.isInViewport = function ($elem) {
87        var elemTop = $elem.offset().top,
88            elemBottom = elemTop + $elem.outerHeight(),
89            viewportTop = $(window).scrollTop(),
90            viewportBottom = viewportTop + $(window).height();
91
92        return elemBottom > viewportTop && elemTop < viewportBottom;
93    };
94
95    Player.onPlayerReady = function (e, id, $wrap) {
96        e.target.mute();
97        e.target.playVideo();
98        $(window).on('resize', function () {
99            if (Player.isInViewport($wrap)) {
100                Player.vidRescale($wrap, id);
101            }
102        });
103    };
104
105    Player.onPlayerStateChange = function (e, id, $wrap) {
106        if (Player.isInViewport($wrap)) {
107            Player.vidRescale($wrap, id);
108        }
109    };
110
111    Player.onPlayerError = function () {
112        console.log('error video');
113    };
114
115    Player.stopVideo = function () {
116        console.log('stop video');
117    };
118
119    if (isDesk() && $players.length > 0) {
120        Player.init();
121    }
122
123    namespace.Player = Player || {};
124
125})(jQuery, window.neusta = window.neusta || {});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.