0

ストリーム内の Twitter アバターを _normal バージョン ( _normalバージョンなど)から _bigger バージョンに自動的に置き換えるブラウザー拡張機能を作成しようとしています(_normal.jpg 文字列を _bigger.jpg に置き換えます)。

次のコードは、jsfiddle jsfiddle to testで外部的に実行された場合、この置換を問題なく実行できます。

$("img.avatar").replaceWith(function () {
  if ($(this).attr("src")) {
      return $(this).attr("src", $(this).attr("src").replace("_normal", "_bigger"));
  } else {
      return $(this);
  }
});

しかし、Twitter ページのコンソールで同じコードを使用しようとすると、すべてのアバター画像が消えてしまいます。どうしてこれなの?

4

1 に答える 1

0

これが jsFiddle で機能しているのに twitter では機能していない理由はまだわかりませんが、これは twitter で機能しています:

$("img.avatar[src]").each(function() {
    var img = $(this);
    img.attr('src', img.attr('src').replace("_normal", "_bigger"));
});

したがって、要素を削除するのではなく、その属性値を新しいものにimg置き換えるだけです。src

srcまた、関数で属性値をテストする代わりに、セレクターをreplaceWith使用して、定義された属性のみを取得できることにも注意してください。[attributeName]img.avatarsrc

あなたの方法がTwitterで機能しない理由をもう少し調査してみます

于 2013-10-12T19:21:27.043 に答える