букмарклет, чтобы получить полный путь к изображению - PullRequest
0 голосов
/ 22 мая 2009

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

В настоящее время скрипт анализирует атрибут src с помощью jQuery, а затем имеет некоторую тупую логику, которая обычно работает, но довольно часто это не так.

Теперь я мог бы продолжать писать некрасивый код, чтобы лучше разбирать URL с помощью регулярных выражений и прочего, но я чувствую, что должен быть какой-то лучший способ сделать это ... Найти какой-то способ имитировать (как в Firefox ) "Правый клик => Копировать местоположение изображения" был бы фантастическим.

Вот соответствующий код js, который у меня есть в настоящее время (глючит, но обычно он работает). Какие-нибудь инновационные идеи о том, как лучше это сделать?

var imgsrc;
$("img").click(function() {
  imgsrc = $(this).attr("src");
  var url = document.URL;

  if (window.location.pathname != "/") {
    var pathLoc = url.indexOf(window.location.pathname);
    url = url.substr(0, pathLoc + 1);
  } else if (window.location.pathname.substr(0,1) == "/") {
    url = url.substr(0, url.length - 1);
  }

  if (imgsrc.toLowerCase().indexOf("http://") != 0) {
    imgsrc = url + imgsrc;
  }

  window.open("http://www.mycompany.com/whatever?imgsrc=" + imgsrc + "");
});

$("img").hover(function () {
  $(this).css({'border' : '4px solid #ff0000'});
  }, function () {$(this).css({'border' : ''});
});

Ответы [ 2 ]

1 голос
/ 22 мая 2009

Я считаю, что большинство браузеров нормализуют свойство SRC (я имею в виду свойство DOM, а не getAttribute('src')). Так что вы можете попробовать:

$("img").click(function() {
    window.open("http://www.mycompany.com/whatever?imgsrc=" + this.src + "");
});

Если это не сработает, то я точно знаю, что у якорных тегов их свойства HREF нормализованы; это определенно будет работать:

$("img").click(function() {
    var fullSrc = $('<a/>').attr('href', this.src)[0].href;
    window.open("http://www.mycompany.com/whatever?imgsrc=" + fullSrc + "");
});
0 голосов
/ 22 мая 2009

Чтобы добавить меню в контекстное меню, вы должны создать расширение для Firefox. Я создал расширение для Википедии здесь : вас может заинтересовать код.

...