2009-05-22 9 views
0

私は、ウェブページ上の画像をクリックすると、画像への完全なパスを与えるブックマークレットに取り組んでいます。イメージはその後当社のサーバーにダウンロードされ、我々はそれにビジネスを行う。ブックレットレット画像へのフルパスを取得する

現在のところ、スクリプトはjQueryを使用してsrc属性を解析してから、通常は機能するダムロジックを持っていますが、しばしばそうではありません。

今、私は正規表現やものを使用して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' : ''}); 
}); 

答えて

1

私はほとんどのブラウザでは、(私はgetAttribute('src')、DOMプロパティをいない意味)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行を完全に殺しました。ありがとう! –

+0

実際には、あなたのURLをエスケープすることは非常に重要です。今すぐすべての機能: $( "img")。 ?imgsrc = "+エスケープ(this.src)+" "); }); –

+0

@fuhrysteve、yup、しかしencodeURIComponent()を使うべきです – James

0

コンテキストメニューにメニューを追加するには、firefoxの拡張機能を作成する必要があります。私はウィキペディアhereの拡張を作成しました。コードに興味があるかもしれません。

関連する問題