Как я могу получить html-сервис скрипта Google Apps для отображения атрибутов данных, используя: after?

0

У меня есть простой скрипт приложений, который использует службу html, и мне нужен: после псевдоселектора.

Свернув проблему на строку кода, у меня есть

<style>
test:after {
  content: attr(data-hidden);
  display: inline-block;
  font-weight: bold;
}
</style>

<test data-hidden="Now you don't">Now you see me </test>

В jsfiddle ожидаемый результат был бы "Теперь вы видите меня, теперь вы этого не делаете ", но я получаю только "Теперь вы видите меня",

Если я удалю: после получения Теперь вы видите меня, как и ожидалось.

FWIW Я использую.setSandboxMode(HtmlService.SandboxMode.NATIVE)

Может ли кто-нибудь сказать мне, что я делаю неправильно?

Теги:
google-apps-script
pseudo-element
google-caja

1 ответ

1

Строка content: attr() удаляется компилятором caja. Попробуйте фрагмент кода на игровой площадке Caja и просмотрите визуализированный результат, который должен быть лучшим представлением о том, как HTML будет дезинфицироваться, когда он будет использоваться в Google Apps Script, чем вы получите в jsfiddle.

Вот что получается:

<caja-v-html>
  <caja-v-head>
    <style>
      .CajaGadget2___ caja-v-test:after{
        display:inline-block;
        font-weight:bold;}
    </style>
  </caja-v-head>
  <caja-v-body>
    <caja-v-test data-caja-data-hidden="Now you don't">Now you see me </caja-v-test>
  </caja-v-body>
</caja-v-html>

data-hidden атрибут <test> сохраняется, но в нем нет атрибута content чтобы его содержать. Вероятно, это потому, что утверждение attr() представляется вектором атаки. (пример)

Если мы снова попробуем с постоянным content, он выживет в уговоре:

<caja-v-html>
  <caja-v-head>
    <style>
      .CajaGadget2___ caja-v-test:after{
        content:"waffles";           <<<<<<
        display:inline-block;
        font-weight:bold;}
    </style>
  </caja-v-head>
  <caja-v-body>
    <caja-v-test data-caja-data-hidden="Now you don't">Now you see me </caja-v-test>
  </caja-v-body>
</caja-v-html>

Из-за санитарии вы не сможете заставить attr() работать таким образом. Вы можете ввести проблему в Caja Issue Tracker.

  • 0
    Действительно, кажется, что attr отклоняется в соответствии с этим [обзором кода] ( codereview.appspot.com/7308092/diff/6002/src/com/google/caja/… ) "Отклонить attr (<идентификатор>), поскольку он обходит атрибут Domado виртуализация значений ", kpreid2 2013/02/13 20:26:59 Это в принципе статически определимо в некоторых случаях (хотя для этого потребуется контекст из селектора). Согласитесь, сейчас нам это не нужно. ihab.awad 2013/02/13 22:20:30 Готово. Это позор, так как я хотел
  • 0
    используйте это для реализации адаптивной таблицы с помощью ( codepen.io/geoffyuen/pen/FCBEg )

Ещё вопросы

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