0

アプリケーション内でニュース項目を表示している Angular 2 アプリケーションに取り組んでいます。ニュース項目はデータベースに保存され、Angular の [innerHTML] バインディングを使用してテンプレートに読み込まれます。

ニュース アイテムのコンテンツ内に埋め込みコンテンツ (ツイートなど) がある場合に問題が発生し、javascript ファイルを読み込む必要があります (例: //platform.twitter.com/widgets.js)。問題は、ページを解析した後でも、ブラウザーがファイルをダウンロードしないことです。

この問題を解決する方法を知っている人はいますか?ありがとう!

4

2 に答える 2

1

HTML を含む文字列からすべての外部スクリプトを取得することに興味がある人向け:

findExternalScriptsInHtmlString(string) {
    var parser = new DOMParser();
    var scripts = parser.parseFromString(string, 'text/html').getElementsByTagName('script');
    var result = [];

    for (var i = 0; i < scripts.length; i++) {
        var src = scripts[i].getAttribute('src');
        if (src.length && result.indexOf(src) === -1) result.push(src);
    }

    return result;
}
于 2016-05-23T13:21:56.873 に答える
1

このようなものがあれば、ファイルをダウンロードすると思います。したがって、ニュース フィード アイテムを取得するときに、ニュース フィード アイテムにデータがあり、そこに twitter が埋め込まれているかどうかを判断できる場合は、それをチェックして、必要な js ファイルを取得できます。

loadedURLs = {
// to hold a cache so you wont download more than once.
};

this.service.fetchDataFromDB()
.subscribe(data =>{
   if(data.url.indexOf('twitter') != -1 && loadedURLs[data.url] == undefined){
     loadedURLs[fileURL] = fileURL;
     // send the file name you want or need.
     this.downloadJS(JSFileURL);
   }
});
downloadJS(fileURL){
   var script = document.createElement('script');
   script.src = (fileURL);
   document.head.appendChild(script);
}
于 2016-05-20T13:18:05.740 に答える