Содержание документа iframe angular9 - PullRequest
0 голосов
/ 28 апреля 2020

Можно ли использовать содержимое внутри Iframe во внешнем документе? (иначе удалите кнопку из Iframe и используйте ее в пользовательском интерфейсе веб-страницы).

Я попробовал следующее в angular проекте, я застрял в получении содержимого iframe:

<iframe appLoaded id="superposition" height="700" width="1500" src="https://wwf.org" frameborder="0"></iframe>

и в директиве, следовательно, "apploaded" в iframe:

@Directive({
  selector: 'iframe [appLoaded]'
})
export class LoadedDirective {

          @HostListener("load", ["$event.srcElement"])
          onLoaded(target: HTMLIFrameElement)
          {

        try
        {
            console.log(target)
        }
        catch(err){
            console.log(err)
        }
    }
}

это даст мне полный элемент <iframe> после загрузки, но когда я пытаюсь получить документ внутри iframe:

console.log(target.contentDocument)

возвращает ноль. И если я попробую contentWindow:

console.log(target.contentWindow)

, то вернется эта ошибка:

DOMException: Blocked a frame with origin "http://localhost:4200" from accessing a cross-origin frame.
    at console.log (<anonymous>)
    at LoadedDirective.onLoaded (http://localhost:4200/main.js:454:21)
    at LoadedDirective_load_HostBindingHandler (http://localhost:4200/main.js:473:144)
    at executeListenerWithErrorHandling (http://localhost:4200/vendor.js:54143:16)
    at wrapListenerIn_markDirtyAndPreventDefault (http://localhost:4200/vendor.js:54185:22)
    at HTMLIFrameElement.<anonymous> (http://localhost:4200/vendor.js:104292:38)
    at ZoneDelegate.invokeTask (http://localhost:4200/polyfills.js:621:35)
    at Object.onInvokeTask (http://localhost:4200/vendor.js:71477:33)
    at ZoneDelegate.invokeTask (http://localhost:4200/polyfills.js:620:40)
    at Zone.runTask (http://localhost:4200/polyfills.js:389:51)

Что я здесь не так делаю?

...