Есть такое многофункциональное дополнение, создающее всплывающее контекстное меню по выделении текста. Одной из его дополнительных возможностей является копирование заголовка и адреса страницы по ctrl+c, когда ничего не выделено. Никаких настроек у этой функции нет (с этим вопросом к разработчику обращались на AMO, но он уже давно не обновляет свое дополнение). Вот я и подумал, что можно было бы просто поправить код, но знать бы как. Вроде этот фрагмент отвечает за ctrl+с

скрытый текст

Выделить код

Код:

if (preferences_.getBoolPref("ctrl-c-copy"))
        {
            // Ctrl+C copies url to the clipboard if there is no selection
            if (e.ctrlKey && (e.charCode == 67 || e.charCode == 99) && e.target.selectionStart == e.target.selectionEnd && document.commandDispatcher.focusedWindow.getSelec

.tion().toString() == "")
            {
                nsAsh.selectionsk.utils.copyToClipboard(this_.getPageDetails());
                return;
            }
        }


Может кто подскажет, как сделать, чтобы копировался только URL?

ищем в дополнении функцию getPageDetails()
в ней смотрим как получается урл и втыкаем это получение вместо this_.getPageDetails() (если там какойто хитрый способ то может не сработать)

как более "нежный" вриант
заменяем this_.getPageDetails() на this_.getPageDetails1()
потом ищем функцию getPageDetails() {...код функции..}
копируем её тамже ниже и переименовываем копию в getPageDetails1(){..код функции..}
после чего устраиваем "разборки" с копией убирая оттуда лишнее чтоб выдавался только урл
было
getPageDetails(){..код функции..}
стало
getPageDetails(){..код функции..}
getPageDetails1(){..код функции - тут и вносим изменения..}

Что-то не выходит.
Сделал вот так

скрытый текст

Выделить код

Код:

if (preferences_.getBoolPref("ctrl-c-copy"))
        {
            // Ctrl+C copies url to the clipboard if there is no selection
            if (e.ctrlKey && (e.charCode == 67 || e.charCode == 99) && e.target.selectionStart == e.target.selectionEnd && document.commandDispatcher.focusedWindow.getSelection().toString() == "")
            {
                nsAsh.selectionsk.utils.copyToClipboard(this_.getPageDetails1());
                return;
            }
        }


А в описании функции вот так
скрытый текст

Выделить код

Код:

getPageDetails: function()
    {
        return window._content.document.title + " (" + document.commandDispatcher.focusedWindow.location + ")";
    },

    getPageDetails1: function()
    {
        return document.commandDispatcher.focusedWindow.location;
    },


И получаю пустой буфер. Что не так?

Может просто

скрытый текст

Выделить код

Код:

//nsAsh.selectionsk.utils.copyToClipboard(this_.getPageDetails());
                nsAsh.selectionsk.utils.copyToClipboard(document.commandDispatcher.focusedWindow.location.href);

doctord пишет

И получаю пустой буфер. Что не так?

если вариант от Dumby
не прокатит
попробуй так

Выделить код

Код:

getPageDetails1: function()
    {
var url=document.commandDispatcher.focusedWindow.location;
alert(url);// это для контроля(потом уберёшь) - при вызове дожен выскочить алерт с урл 
// если алерт пустой то попробуй заменить на 
/*
Получить адрес текущей страницы 5 вариантов
var url=getBrowser().currentURI.spec;
var url=getBrowser().contentWindow.location
var url=content.location;
var url=gBrowser.currentURI.spec;
var url=content.document.location;

Получить текущее значение адресной строки
var url=gURLBar.value;
*/

return url;
    },

Большое спасибо за помощь, вроде все работает как хотелось. Подошел вариант Dumby. Всего то и надо было после document.commandDispatcher.focusedWindow.location дописать .href.