#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. Таким образом, это ничего не меняет, поскольку содержимое создается впоследствии, и поэтому ничего не происходит.