2009-05-22 137 views
0

我正在研究一个bookmarklet,当您单击网页上的任何图像时,该图标会给出图像的完整路径。然后将图像下载到我们的服务器上,我们会为其制作商业内容。bookmarklet获取图像的完整路径

目前,该脚本使用jQuery解析出src属性,然后有一些愚蠢的逻辑通常起作用,但通常不起作用。

现在,我可以不断写出丑陋的代码,以更好地使用正则表达式和东西解析出url,但我觉得应该有一些更好的方法来做到这一点..寻找某种方式来模仿(如在火狐)“右键点击=>复制图像位置”将是太棒了。

这里是我目前拥有的相关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' : ''}); 
}); 

回答

1

我相信大多数浏览器标准化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

第一个完全工作,并完全杀死了10行错误代码。谢谢! – 2009-05-22 12:42:19

0

要添加一个菜单到上下文菜单,你必须为Firefox创建一个扩展。我为维基百科创建了一​​个扩展here:您可能会对代码感兴趣。