Как заставить эту кнопку «Поделиться» получать HTML-заголовок текущего URL-адреса в дополнение к URL-адресу?

Я новичок в JavaScript, пытаюсь создать простую кнопку общего доступа в качестве учебного проекта. Я немного озадачен одним аспектом. Хотя я могу получить URL-адрес текущей страницы и передать его в URL-адрес, который предварительно заполняет форму общего доступа, я не уверен, как получить заголовок HTML.

Вот что у меня осталось:

<a href="http://www.example.com/submit" onclick="window.location = 'http://www.example.com/submit?url=' + encodeURIComponent(window.location); return false;"> Share This </a> 

Что мне добавить в раздел onclick, чтобы также получить заголовок текущей страницы? Что бы это ни было, в URL-адресе оно будет передано как title=.

Бонус: есть ли что-то, что я могу добавить, чтобы отправить выделенный текст с текущей страницы? Это войдет в URL как body=

Итак, я хочу заполнить эти пробелы:

<a href="http://www.example.com/submit" onclick="window.location = 'http://www.example.com/submit?url=' + encodeURIComponent(window.location); return false; + 'title=' + SOMETHING + 'body=' + SOMETHING'"> Share This </a>

По крайней мере, мне так кажется. Я не на 100% уверен, что поставил знаки "+" и "в нужном месте".


person bflora2    schedule 25.06.2009    source источник
comment
Не ответ, но вы должны знать, что у Internet Explorer есть ограничение на длину URL-адреса, который он может просматривать. Это ограничение составляет 2048, и если URL + заголовок больше этого, произойдет некоторая обрезка.   -  person Andy E    schedule 25.06.2009


Ответы (2)


Думаю, вам нужен document.title. Получить выделенный текст немного сложнее, особенно если вы хотите поддерживать IE. Стандарт DOM - это window.getSelection, но для IE вам нужно возиться с диапазоны - я не проверял, улучшились в IE8.

Также я хотел спросить, где будет кнопка «Поделиться»? Если он находится на странице, то нажатие на кнопку отменяет выделение выделенного текста.

person robertc    schedule 25.06.2009
comment
Это была бы кнопка HTML, которую каждый мог бы добавить в свой блог, чтобы позволить им отправить ее в мою общую форму отправки Digg-clone. Я подумал, что создание такой кнопки будет хорошим учебным проектом. - person bflora2; 25.06.2009
comment
Хорошо, тогда я думаю, что возникнет проблема с отключением текста, когда пользователь нажимает кнопку. Возможно, вы сможете что-то решить, найдя соседний текстовый элемент и выбрав его, но в конечном итоге вам может потребоваться реализовать разные кнопки для разных типов блогов. Это могло бы сработать, если бы вы реализовали его как букмарклет, а не кнопку. - person robertc; 25.06.2009

Есть несколько способов получить выделенный текст, и разные браузеры реализуют разные:

Во-первых, есть document.getSelection(), который возвращает выделенный текст в виде строки. Затем есть window.getSelection(), который вернет объект выбора. Чтобы получить необработанный текст, используйте его метод toString(). Способ получения текста IE использует диапазоны, то есть document.selection.createRange().text.

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

if(typeof document.getSelection === 'undefined') {
    document.getSelection =
        window.getSelection ? function() {
            return window.getSelection().toString();
        } :
        document.selection ? function() {
            return document.selection.createRange().text;
        } :
        null;
}

В качестве примечания: вы должны установить location.href (а не location), чтобы изменить адрес документа.

person Christoph    schedule 25.06.2009