Добавить мета-тег с изображением и заголовком в проект Angular 6

#javascript #angular

#javascript #angular

Вопрос:

Я пытаюсь добавить изображение и заголовок при отправке URL одной страницы в моем проекте, и я ищу лучший способ, как это сделать. Это то, что я пробовал:

 createMetaTag() {
    const meta = document.createElement('meta');
    meta.setAttribute('property', 'og:image');
    meta.content = ''   this.activeCampaignModel.thumbnail;
    document.getElementsByTagName('head')[0].appendChild(meta);


    const meta2 = document.createElement('meta');
    meta2.setAttribute('property', 'og:title');
    meta2.content = 'Results for: '   this.activeCampaignModel.name;
    document.getElementsByTagName('head')[0].appendChild(meta2);

}
  

Теперь, когда я делюсь ссылкой, ничего не происходит, я отправляю ссылку, например, в skype, на странице есть мета-теги с заголовком и изображением, но ничего не происходит… В skype изображение и заголовок не отображаются. Вот как выглядят мета-теги:

 <meta property="og:image" content="https://somethingsomething.png">
<meta property="og:title" content="Results for: Test Graph v3">
  

Редактировать

Я реализовал код с помощью setAttribute, но по-прежнему ничего не происходит.

РЕДАКТИРОВАТЬ 2

Я попытался добавить все мета-теги с атрибутами name и property, но это также не сработало. Это код для остальных тегов (все создаются в разделе head):

     const meta3 = document.createElement('meta');
    meta3.setAttribute('name', 'og:type');
    meta3.content = 'website';
    document.getElementsByTagName('head')[0].appendChild(meta3);

    const meta4 = document.createElement('meta');
    meta4.setAttribute('name', 'og:url');
    meta4.content = ''   environment.resultsUrl;
    document.getElementsByTagName('head')[0].appendChild(meta4);

    const meta5 = document.createElement('meta');
    meta5.setAttribute('name', 'og:description');
    meta5.content = ' ';
    document.getElementsByTagName('head')[0].appendChild(meta5);
  

Правка 3

Найдена проблема, но не найдено решение. Мета-теги генерируются позже, при загрузке компонента, когда вы смотрите на исходный код страницы, он выглядит совершенно иначе, и мета-тегов там нет, просто app-root без скриптов / ссылок, как вы можете видеть на изображении:

введите описание изображения здесь

Комментарии:

1. Можете ли вы попробовать заменить property ключевое слово на name и проверить еще раз?

Ответ №1:

Насколько мне известно,

Мета-тег принимает только два свойства name и content .

 <meta name="keywords" content="HTML, CSS, XML, XHTML, JavaScript">
  

Вы можете попробовать заменить ключевое слово property на name и проверить еще раз.

 <script type='text/javascript' data-cfasync='false'>
  createMetaTag() {
      var link=document.createElement('meta');
      link.name="og:image";
      link.content = ''   this.activeCampaignModel.thumbnail;
      document.getElementsByTagName('head')[0].appendChild(link);
 }
</script>
  

Справочная ссылка

Комментарии:

1. Я все еще не получаю миниатюру при совместном использовании URL-адреса, мета-тег выглядит нормально, а URL-адрес изображения находится в содержимом, но при совместном использовании ничего не происходит

Ответ №2:

property Это проприетарный атрибут, используемый Facebook, поэтому он не является стандартным атрибутом DOM и, следовательно, отсутствует в определениях Typescript typings для используемого вами DOM. Вы можете использовать setAttribute для установки произвольного атрибута для HTML-элемента.

 createMetaTag() {
    const meta = document.createElement('meta');
    meta.setAttribute('property','og:image'); //this line is the issue
    meta.content = ''   this.activeCampaignModel.thumbnail;
    document.getElementsByTagName('head')[0].appendChild(meta);
}
  

Комментарии:

1. Теперь мета-тег не отображает атрибут property, только содержимое, но по-прежнему не отображает миниатюру при отправке кому-либо URL :/

2. возможно, вам нужно использовать meta.setAttribute(‘property’,’og:image’) вместо этого

3. Я обновил код и вопрос, он создает правильные мета-теги, но не работает :/