Настраиваемый элемент в PDFTron

#javascript #pdftron

#javascript #pdftron

Вопрос:

Я пытаюсь добавить флажок, который гласит: «Включить привязку: []». Если пользователь нажмет на этот флажок, я хочу проверить, установлен этот флажок или нет. Но я получаю сообщение об ошибке типа: document.getElementById(…) равно нулю.

Ниже приведен код:

 instance.setHeaderItems(header => {
    header.getHeader('toolbarGroup-Annotate').unshift({
        type: 'customElement',
        render: function() {
            const checkbox = document.createElement('input');
            checkbox.type = 'checkbox';
            checkbox.name = 'snap-to-grid';
            checkbox.value = '1';
            checkbox.id = 'snap-to-grid';
            checkbox.onclick = function(evt) {
                alert(document.getElementById('snap-to-grid').checked);
            };
            return checkbox;
        }
    });
});
  

Итак, есть ли способ узнать, установлен этот флажок или нет? Также как я могу добавить текст перед флажком?

Ответ №1:

WebViewer запускается внутри iframe на вашей странице. Когда мы визуализируем эти пользовательские кнопки, они также находятся внутри этого iframe. Чтобы получить доступ к элементу в вашем случае, вам сначала нужно получить документ iframe. Это должно сработать для вас

 instance.setHeaderItems(header => {
    header.getHeader('toolbarGroup-Annotate').unshift({
      type: 'customElement',
      render: function() {
        const checkbox = document.createElement('input');
        checkbox.type = 'checkbox';
        checkbox.name = 'snap-to-grid';
        checkbox.value = '1';
        checkbox.id = 'snap-to-grid';
        checkbox.onclick = function(evt) {
          alert(instance.iframeWindow.document.getElementById('snap-to-grid').checked);
        };
        return checkbox;
      }
    });
  });
  

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

1. Этот флажок будет сброшен (т. Е. снят), если я нажму на опцию «Инструменты», у которой есть значок карандаша. Итак, есть ли какое-либо событие, которое я могу использовать, когда пользователь нажимает на опцию «Инструменты», чтобы с помощью глобальной переменной я мог снова установить флажок?

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