Показывать содержимое из DIV в МЕТА-теге

#javascript #html #content-management-system #meta

#javascript #HTML #content-management-system #мета

Вопрос:

У меня есть div, который выглядит следующим образом:

             <div id="beskrivelse" class="description html_content" itemprop="description">
                {{description}}
            </div>
 

Содержимое {{description}} создается в серверной части.

Как я могу сделать так, чтобы это содержимое отображалось в моей мете здесь:

             <meta property="og:description" content=" HERE "/>
 

Я получаю синтаксическую ошибку, если я пишу:

             <meta property="og:description" content=" {{description}} "/>
 

Это простой способ сделать это? Может быть, поместить его в какую-то переменную?

У меня нет возможности изменить это в серверной части, поскольку я использую закрытую систему, Tictail.com . Я хочу, чтобы то, что я написал в моем {{description}} , отображалось в мета-теге.

Я не могу использовать какой-либо код php, asp (и т. Д.), Поскольку сайт этого не допускает.

Есть предложения?


Я пробовал это без успеха:

     <script language="javascript" type="text/javascript">  
    var descval = document.getElementById('beskrivelse').innerHTML;
    var paras = document.getElementsByTagName('meta');
    for (i = 0; i < paras.length; i  ) {
        var test = paras[i].getAttribute('property');
        if(test == "og:description")
        {
           paras[i].content = descval;
        }
    }
    </script>
 

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

1. Куда в документе вы поместили свой JavaScript? Убедитесь, что вы разместили его внизу страницы, непосредственно перед закрытием </body> или, по крайней мере, после div, содержащего описание, чтобы убедиться, что элемент находится в DOM при выполнении скрипта. Кроме того, есть ли у вас мета-элемент со свойством og:description в вашем DOM с самого начала, или вам нужно его создать, а не искать?

2. Я поместил его в нижней части страницы перед </body> . Это ничего не меняет. Пример: jsfiddle.net/sureshponnukalai/vTtn2 Но если я смогу создать его вместо того, чтобы менять содержимое, меня это вполне устроит. Я не уверен, разрешит ли это сайт, поскольку он создает свою собственную мету, когда не может ее найти.

Ответ №1:

Ваш код должен работать, учитывая, что у вас уже есть мета-элемент в вашем DOM со свойством og:description и что вы запускаете скрипт либо в нижней части страницы, либо в готовом к DOM обратном вызове. Как это происходит в вашей скрипке, если вы настроили JS для запуска onDomReady (как я сделал здесь).

Если у вас нет мета-элемента в DOM с самого начала, вам может потребоваться создать его и добавить в DOM. Что-то вроде этого:

 <script>
// Get the content
var descval = document.getElementById('beskrivelse').innerHTML;
// Create the new meta-element
var elm = document.createElement("meta");
elm.setAttribute("property", "og:description") 
elm.setAttribute("content", descval);
// Append the element to the HEAD
document.getElementsByTagName("head")[0].appendChild(elm);
</script>
 

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

1. Странно. Что бы я ни пытался, это ничего не добавляет и не редактирует. Даже на jsfiddle. Часть «<meta property=»og:description» id=»test» content=» HERE «/>» вообще не меняется. Даже со старым кодом и новым кодом.

2. @user3760157 Я собрал его в этой скрипке , и это действительно работает. Используете ли вы DOM-инспектор ваших браузеров devtools, а не просто «Просмотр источника»? Источник никогда не будет обновляться, он содержит только содержимое, обслуживаемое сервером. Вам нужно будет использовать инструмент разработчика, который постоянно обновляет текущий DOM, чтобы увидеть изменения.

3. Я думаю, проблема в том, что сайт создает контент после активации javascript. Таким образом, это ничего не меняет, поскольку содержимое создается впоследствии, и поэтому ничего не происходит.