0

我想跟踪尚未附加到文档的HTMLImageElement的 src 属性所做的更改。我的目标是修改图像 URL 以使用插入的脚本强制使用某个代理服务器。主要使用 Image 对象进行预加载的脚本是外部(第 3 方)脚本,因此我不能只搜索和替换任何instance.src = value其他内容。我可以控制嵌入脚本的文档,但不能控制脚本本身。

我已经尝试在 Image 元素上定义 getter/setter

Object.defineProperty(
  Image.prototype,
  "src",
  { get : function(){...}, set : function(val){...}}
);

但这似乎根本没有任何效果。创建新图像时就像

var img = new Image();
img.src = "foo.png";
alert(img.src);

既不调用 setter 也不调用 getter。

您是否知道在修改 src 属性而不修改设置属性的原始源时我可能会尝试得到什么通知?

提前致谢!

4

1 回答 1

1

我用你的示例代码重新测试了我之前的答案 - 没有骰子。因此,我将采用 Andrei 的建议——不要这样做:P 相反,通过更“常规”的方式使用附加到原型的方法:

Image.prototype.setSrc = function(src) {
    // your code affecting this.src
    // from what I can tell in your use-case, you only need this setter
};

Image.prototype.getImage = function() {
    // but, in case you want to do anything before getting the image
    // you can call this method
};

var img = new Image();
img.setSrc("foo.png");

// snip

document.body.appendChild(img.getImage());
于 2013-05-08T12:38:51.620 回答