0

我正在尝试创建一个浏览器扩展程序,该扩展程序自动将流中的 twitter 头像从他们的 _normal 版本替换为他们的 _normal 版本(将 _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 回答