Букмарклет для сохранения исследовательских цитат

0

Я пытаюсь создать букмарклет браузера, который позволяет пользователю сохранять цитату (блок текста) - и при нажатии букмарклета - сохранит цитату, а также временную метку и URL-адрес их профиля внутри веб-приложения.

Вы можете увидеть код, который я написал ниже, но столкнувшись с несколькими проблемами.

  1. Хорошо обменивать код, чтобы работать в букмарклет.

  2. Очевидно, использование $ post может быть тяжелым, если некоторые страницы потребуют его добавления букмарклетом.

Любые идеи о том, как действовать?

Вы можете видеть, где я сейчас нахожусь здесь http://jsfiddle.net/Rh7zx/1/

   (function() {
    function getSelectionHtml() {
    var html = "";
    if (typeof window.getSelection != "undefined") {
        var sel = window.getSelection();
        if (sel.rangeCount) {
            var container = document.createElement("div");
            for (var i = 0, len = sel.rangeCount; i < len; ++i) {
                container.appendChild(sel.getRangeAt(i).cloneContents());
            }
            html = container.innerHTML;
        }
    } else if (typeof document.selection != "undefined") {
        if (document.selection.type == "Text") {
            html = document.selection.createRange().htmlText;
        }
    }
    return html;
}

function saveToBiblio() {

    var url = window.location;
    var dateSaved = new Date();
    var selectedText = getSelectionHtml();

    console.log(url + dateSaved + selectedText);

    /*
    do the $post here
    */
}
)();
  • 0
    «Очевидно, что использование $ post может не работать в разных браузерах». Он будет прекрасно работать в кросс-браузерном режиме, но не будет работать на страницах, на которых не загружен jQuery, и для букмарклета было бы достаточно тяжело добавить jQuery на страницу только для этого.
  • 0
    Ах, простите за это - вы совершенно правы. Так что мне просто нужно включить jquery, если он еще не загружен?
Показать ещё 3 комментария
Теги:
google-chrome-extension

1 ответ

1

1) Хорошо нарисуйте код, чтобы работать в букмаркете.

Букмарклет - это только код JavaScript, закодированный в URL-адрес, используя псевдопротокол javascript: Есть несколько сайтов и инструментов, которые возьмут ваш код и превратят его в букмарклет. Главное, чтобы сделать так, чтобы при запуске кода произошла вещь, которую вы хотите сделать. В настоящее время ваш код определяет две функции, но не вызывает их. Вы хотите вызвать соответствующий. Также лучше всего обернуть ваш код букмарклета в функции определения области видимости, чтобы вы не добавляли в глобальное пространство имен страницы (из-за возможности конфликтов):

(function() {
    // Your code here
)();

Некоторые из создателей букмарклов могут иметь возможность сделать это за вас, но делать это самостоятельно тривиально.

2) Очевидно, что использование $ post может не работать с перекрестным браузером.

Это будет работать с кросс-браузером, но не будет работать на страницах, на которых не загружен jQuery, и загрузка jQuery на страницу, вероятно, будет излишней. Я бы использовал XMLHttpRequest напрямую.

  • 0
    Правильно, извините, что раздражаю вас, но я не должен вызывать функции при нажатии на букмарклет / загрузке скрипта?
  • 0
    @ user2656127: Да. Весь ваш код будет работать только тогда, когда сработает букмарклет. Ничто из этого не запустится до запуска букмарклета.
Показать ещё 5 комментариев

Ещё вопросы

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