0

私はJavaScriptの非常に基本的な理解を持っており、ブックマークレットを作成して1つのサブディレクトリに移動し、ディレクトリ名を置き換えることができました。

コード:

javascript:(function(){var pathArray=window.location.pathname.split('/');var newPathname=pathArray[0]+"/"+pathArray[1]+"/"+pathArray[2]+"/"+pathArray[3]+"/"+pathArray[4]+"/s2450-k/";document.location.href=newPathname;})()

基本的には、Blogspot、Picasaweb、または Google+ アルバムの画像の URL を分解し、最大サイズ (最大 2450x2450) に置き換えます。

したがって、画像の URL:

http://www.website.com/SubD1/SubD2/SubD3/SubD4/s640/blah.JPG

次のように変換されます:

http://www.website.com/SubD1/SubD2/SubD3/SubD4/s2450-k/

これは、 document.locationを使用しているため、ブックマークレットを使用する前に「新しいタブで画像を開く」オプションを使用した場合にのみ機能します。

各画像を個別に開かずに、Web ページやブログで画像を直接表示したいと考えています。

最初に各画像を個別に開くのではなく、タグを具体的に識別し、ブックマークレットを介してインラインでページ上で上記の機能を実行する方法を理解するための助けを探していますか?

また、やみくもに行うとロゴや背景などが壊れてしまうため、ページ上のすべての画像ではなく、関心のある画像のみを変更する方法がわかりません。もちろん気にしているわけではありませんが、ここでの私の第 2 の目的は、どちらがどちらであるかを識別し、これをシームレスにする方法を学ぶことです。

たぶん、ブックマークレットを実行したら、onclick をキャプチャして、マウス カーソルの下の要素にのみ関数を適用できますか?

4

2 に答える 2

1

CSS 属性セレクターを使用して変更したい画像のみを選択し、これらをループして、関連する画像のみに関数を適用できます。

var images = document.querySelectorAll('img[src*="http://common.part.of.image.src"]')

Array.prototype.forEach.call(images, function (img) {
    img.src = yourFunctionThatChangesUrls(img.src)
})

document.querySelectorAll最新のブラウザーで使用でき、指定されたセレクターに一致するページ上のすべての要素を選択できます。

変更しようとしている画像に URL の一部が共通していると仮定すると、*=属性セレクターを使用できます。これは[src*="foo"]、どこにでも foo を含む src を持つすべてのものに一致することを意味します。役に立つかもしれない他のものがあります。

画像を取得したら、一致した各要素で関数を使用できます。

于 2013-01-04T12:31:08.370 に答える
0

ページ上のdocument.getElementByTagName('img')すべての を返す が存在します。<img>属性srcは、質問に書いたルーチンで変更できるようになりました(明らかURLに、ドメイン部分の正規表現を使用して、関心があることを確認する必要があります)。

于 2013-01-04T12:17:43.733 に答える