API-интерфейс YouTube связан с окном, а не внутри песочницы iframe - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь обернуть API-интерфейс YouTube внутри изолированного iframe и предоставляю ему только необходимые разрешения.

Я использую пакетact-frame-component для переноса компонента проигрывателя YouTube в изолированном iframe,Я отладил его до такой степени, что знаю, почему видео не показывается, но не могу понять, почему это происходит.

Когда доходит до того, что youtube-api заменяет оригинальный htmlЭлемент с iframe youtube, API-интерфейс youtube не может найти указанный элемент, потому что он находится внутри изолированного iframe.Код ниже является частью кода YouTube, который выбирается и выполняется.Я разместил комментарий, объясняющий, что я изменил, чтобы код youtube работал, но проблема в том, что API youtube не работает в контексте изолированного iframe.

function W(a, b, c) {
    this.h = this.a = this.b = null;
    this.g = this[r] || (this[r] = ++t);
    this.c = 0;
    this.A = !1;
    this.s = [];
    this.f = null;
    this.l = c;
    this.m = {};
    c = document;

    // Here, the document is not the document of the iframe, but the
    // document of the entire page. I need this to be something like
    // window.frames["myIframe"].contentDocument.getElementById(a)

    if (a = l(a) ? c.getElementById(a) : a)
        if (c = "iframe" == a.tagName.toLowerCase(),
        b.host || (b.host = c ? Ba(a.src) : "https://www.youtube.com"),
        this.b = new Wa(b),
        c || (b = Ya(this, a),
        this.h = a,
        (c = a.parentNode) && c.replaceChild(b, a),
        a = b),
        this.a = a,
        this.a.id || (a = b = this.a,
        a = a[r] || (a[r] = ++t),
        b.id = "widget" + a),
        R[this.a.id] = this,
        window.postMessage) {
            this.f = new M;
            Za(this);
            b = V(this.b, "events");
            for (var d in b)
                b.hasOwnProperty(d) && this.addEventListener(d, b[d]);
            for (var e in Sa)
                $a(this, e)
        }
}
...