Заголовок приложения AngularJS отображается как {{metaTitle}} при вставке ссылки в Skype

0

Я создаю веб-приложение на основе AngularJS. Я заполняю ярлык title dyanmically, так что он изменяется для каждой страницы. Когда я размещаю приложение онлайн и передаю ссылку на него через Skype с друзьями (через мгновенный обмен мгновенными сообщениями через Skype), вместо того, чтобы metaTitle анализируемое значение metaTitle, Skype отображает его как {{metaTitle}}. Поэтому мои друзья видят фигурные скобки с metaTitle как текст внутри него.

Что можно сделать, чтобы проанализировать значение metaTitle в Skype и других собственных приложениях, которые на самом деле показывают вам предварительный просмотр ссылки, которая была вставлена, как часть сообщений чата?

Вот мой код:

<html ng-app="myApp">
<head>
      <title>{{metaTitle}}</title>
</head>
<body ng-controller="myController">
      Custom content
</body>
</html>
  • 0
    Может быть, попробовать с <title ng-bind="metaTitle"></title> ? хотя у меня есть ощущение, что он может просто скопировать и вставить пустой заголовок.
  • 0
    Что такое {{metaTitle}}? я имею в виду откуда это идет?
Показать ещё 8 комментариев
Теги:
skype

3 ответа

0

Если вам нужен реальный динамический заголовок, вам нужно отобразить страницу на стороне сервера для этих роботов (или служить статическому кешу страницы), потому что они не выполняют JavaScript, который позволяет заполнять заголовок.

В противном случае вы можете использовать

<title ng-bind="metaTitle">Static title for Skype</title>
  • 0
    Но это будет отображать одно и то же статическое сообщение для каждой страницы. Верный? Например, скажем, я использую статическое сообщение как «Добро пожаловать», и если я вставлю ссылку на домашнюю страницу, мои друзья могут увидеть «Добро пожаловать». Если я вставлю ссылку на страницу контактов, они все равно увидят сообщение «Добро пожаловать» вместо того, чтобы показывать что-то вроде «Контакт». Это можно исправить?
  • 1
    Да, это можно сделать, как я уже сказал в своем ответе, сгенерировав заголовок на стороне сервера. Вместо того, чтобы обслуживать статическую страницу index.html, вы бы обслуживали динамически генерируемую страницу, как мы все делали до того, как стали популярными одностраничные платформы JS, такие как Angular.
Показать ещё 6 комментариев
0

Skype не выполняет/не интерпретирует JavaScript (в данном случае AngularJS) внутри страницы. Все Skype знает, что это статический HTML-контент.

Возможно, вам стоит взглянуть на рендеринг на стороне сервера или статическую целевую страницу для вашего приложения.

Изменение: согласно @JB Nizet answer, вы также можете использовать следующий синтаксис.

<title ng-bind="metaTitle">Static title for Skype</title>
  • 0
    Я думаю, что уже попробовал это, но позвольте мне снова попробовать.
-2

Поскольку вы упоминаете, что вы заполняете metaTitle с вашего контроллера, вам нужно переместить объявление контроллера в html-тег:

<html ng-app="myApp" ng-controller="myController">
<head>
      <title>{{metaTitle}}</title>
</head>
<body>
      Custom content
</body>
</html>
  • 0
    Я думаю, что вы правы относительно объявления контроллера на родительском узле. Однако проблема, с которой сталкивается OP, связана с тем, что робот (Skype) не выполняет JavaScript на странице.
  • 0
    Я делаю это так: $scope.$parent.metaTitle="Home"; , Поэтому перемещение ng-контроллера в html не решает мою проблему.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню