#javascript #jquery #url #typeform
Вопрос:
Я надеюсь встроить форму шрифта в различные статьи в моем центре документации. Однако мне нужно захватить URL-адрес страницы с помощью скрытых полей, чтобы я мог связать, какой отзыв был оставлен на какой странице статьи.
В настоящее время ответы агрегированы, и я не знаю, на какую статью пользователь оставил отзыв. Вот как выглядит код встраивания (я также добавил скрытое поле под названием article_url
):
<div data-tf-widget="a1B2c3D4" data-tf-opacity="0" data-tf-hide-headers data-tf-hide-footer data-tf-hidden="article_url=xxxxx" style="width:100%;height:350px;"></div><script src="//embed.typeform.com/next/embed.js"></script>
Я уверен, что смогу сделать это с помощью скрытых полей и, возможно window.location.href
, функции в коде встраивания и с помощью jquery, но я не уверен, как будет выглядеть сценарий, и мои навыки кодирования немного подзабыты.
Ответ №1:
Вы можете обновить код встраивания формы шрифта непосредственно с помощью JavaScript, как это:
const formElement = document.querySelector('[data-tf-widget=a1B2c3D4]')
formElement.dataset.tfHidden = `article_url=${window.location.href}`
Однако, поскольку вы уже используете пользовательский JavaScript, вы можете использовать библиотеку встраивания форм (см. На Github) для большего контроля над встроенными формами:
<div id="form" style="width: 100%; height: 350px"></div>
<script src="//embed.typeform.com/next/embed.js"></script>
<link rel="stylesheet" href="//embed.typeform.com/next/css/widget.css" />
<script>
const formId = 'a1B2c3D4'
const container = document.querySelector('#form')
window.tf.createWidget(formId, {
container,
hideHeaders: true,
hideFooter: true,
opacity: 0,
hidden: {
article_url: window.location.href,
},
})
</script>
Комментарии:
1. Спасибо! У меня все еще небольшие проблемы. Мы используем руководство Zendesk, поэтому наши сценарии и HTML представлены на разных листах: script.js amp; article_page.hbs. script.js:
const formId = 'a1B2c3D4' const container = document.querySelector('#typeform-form') window.tf.createWidget(formId, { container, hideHeaders: true, hideFooter: true, opacity: 0, hidden: { article_url: window.location.href, }, })
article_page.hbs<div id="typeform-form" data-tf-widget="a1B2c3D4" style="width:100%;height:350px;color:#FFFFFF;"></div><script src="//embed..js"></script>
2. Вы смешиваете 2 подхода, которые я перечислил в своем ответе. Если вы хотите, чтобы скрипт жил в отдельном файле JS, вам нужно использовать второй подход . Ваш HTML-файл (HBS) должен содержать только div с атрибутом id и сценарием:
<div id="form" style="width: 100%; height: 350px"></div><script src="//embed.typeform.com/next/embed.js"></script>
Содержимое<script>
может быть извлечено в отдельный файл JS (напримерscript.js
).3. Привет — реализовал то, о чем вы упомянули, и все еще испытываю некоторые проблемы. Вот скриншот моего сценария (script.js) и страница статьи (article_page.hbs): share.getcloudapp.com/kpunnpoE . Любое понимание поможет! Поле article_url в форме шрифта по-прежнему отображается пустым.
4. @Задача вам нужно удалить все
data-tf-
атрибуты из DIV и сохранить только код JS. Как этот рабочий пример: antique-sugar-pirate.glitch.me