2016-09-28 10 views
1

私は、Typescriptを使ってAngular 2でアプリを作っています。私はFacebookのプラグインのいくつかをページに実装しました。今、私がページをロード/リロードすると、ロードが遅くなり、ロードが完了してからしばらく時間がかかります。彼らは部品を積みます...そうです。 Facebookページのプラグインはヘッダーを最初に表示し、次にプラグインの残りの部分などを表示します。それは私の意見では醜いようです。彼らが完全にロードされた後にリスナーを作り、見せる方法はありますか?ここFacebookのプラグインがロードされた後に表示する

コード(FacebookのjavascriptSDKとのindex.html)である:

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>BLOG OLIFFFFFFKA</title> 
    <base href="/"> 

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
    <link href='https://fonts.googleapis.com/css?family=Prompt:300,200' rel='stylesheet' type='text/css'> 

    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="icon" type="image/png" href="http://localhost/OliwkaFinal/back/Images/default/favicon.png"> 

</head> 
<body> 
<div id="fb-root"></div> 
<script>(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/pl_PL/sdk.js#xfbml=1&version=v2.7&appId=1025977917520637"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 

<app-root><img class="loading-image" src="http://localhost/OliwkaFinal/back/Images/default/loading.gif"></app-root> 

</body> 
</html> 

及び例えば私はこの1つのようなものを考えていた

<router-outlet></router-outlet> 

<div id="facebook-page-container" *ngIf="!fanpageClosed"> 
    <a (click)="closeFacebookFanpage()" class="pointer facebook-close-link"><span class="glyphicon glyphicon-remove"></span></a> 
    <div class="fb-page" 
     data-href="https://www.facebook.com/oliffffffka/" 
     data-tabs="timeline" 
     data-width="250" 
     data-height="420" 
     data-small-header="true" 
     data-adapt-container-width="true" 
     data-hide-cover="true" 
     data-show-facepile="true"> 
     <blockquote cite="https://www.facebook.com/oliffffffka/" class="fb-xfbml-parse-ignore"> 
      <a href="https://www.facebook.com/oliffffffka/">Oliffffffka</a> 
     </blockquote> 
    </div> 
</div> 

:(Facebookのページのプラグインを持っている)app.component.ts

facebookLoaded = false; 

constructor(private _fbService: FacebookService) {} 

ngOnInit(){ 
    this._fbService.loaded().subscribe(
     response => { 
      if(response[state] == "loaded") { // OR true or whatever... 
       this.facebookLoaded = true; 
      } 
     } 
    ); 
} 

と私のFacebookのプラグインタグの*ngIf="facebookLoaded"とHTMLでそれを実装します。これと同じ方法またはこれを行う方法はありますか?

ありがとうございます。 Facebookの開発者site

var finished_rendering = function() { 
console.log("finished rendering plugins"); 
} 
// In your onload handler 
FB.Event.subscribe('xfbml.render', finished_rendering); 

とFacebookのプラグインのHTMLからの

答えて

0

は、使用しても ロード enter image description here enter image description here レンダリングすることを使用することができるかどうかを確認し、状態を知らせるためのデータ属性を持っています上記の状態は、あなたのCSSに従ってみてください

[fb-xfbml-state="rendered"]{ 
     display:block; 
    } 
    [fb-xfbml-state="parsed"]{ 
     display:none; 
    } 
+0

CSSは期待通りに機能しませんが、購読者はうまく機能しました。ありがとうございました! –

関連する問題