← Все примеры

JavaScript Продуктивность scholar.google.com

Scholar: один клик «Скопировать BibTeX»

Добавляет в попап «Cite» кнопку, которая загружает запись BibTeX и копирует её в буфер обмена.

Код для копирования

// Rewrite the "Cite" popup so BibTeX copies to the clipboard with one click
(function () {
  function watch() {
    document.querySelectorAll('div#gs_citd, div.gs_citi, div.gs_citr').forEach(function (popup) {
      if (popup.dataset.jzSchBib) { return; }
      var bibLink = popup.querySelector('a[href*="output=bibtex"], a[href*="scisig=bibtex"], a[href*="q=info"][href*="bibtex"]');
      if (!bibLink) { return; }
      popup.dataset.jzSchBib = '1';
      var btn = document.createElement('button');
      btn.type = 'button';
      btn.textContent = 'Copy BibTeX';
      btn.style.cssText = 'margin:8px 4px;padding:6px 14px;background:#1a73e8;color:#fff;border:0;border-radius:4px;font-size:14px;font-weight:600;cursor:pointer;';
      btn.addEventListener('click', function (e) {
        e.preventDefault();
        fetch(bibLink.href, { credentials: 'include' })
          .then(function (r) { return r.text(); })
          .then(function (html) {
            var m = html.match(/@\w+\{[\s\S]*?\n\}/);
            var bibtex = m ? m[0] : html.replace(/<[^>]+>/g, '').trim();
            return navigator.clipboard.writeText(bibtex);
          })
          .then(function () {
            btn.textContent = 'Copied!';
            setTimeout(function () { btn.textContent = 'Copy BibTeX'; }, 1500);
          })
          .catch(function () { btn.textContent = 'Failed'; });
      });
      popup.insertBefore(btn, popup.firstChild);
    });
  }
  new MutationObserver(watch).observe(document.body, { childList: true, subtree: true });
  watch();
})();

Как использовать этот пример

  1. Скопируй код кнопкой выше.
  2. Установи JustZix (2 минуты) и открой расширение на нужной странице.
  3. Добавь новое правило, совпадающее с этой страницей.
  4. Вставь код в панель JavaScript правила и сохрани — он запускается при каждом заходе на страницу.

Оцени этот пример

Оценок пока нет — оцени первым.

Этот пример работает?

Сниппеты бесполезны, если их некуда вставить.

JustZix устанавливается за 2 минуты и запускает твой код на каждой подходящей странице. Без аккаунта, без оплаты.

Скачать бесплатно Смотреть применение