Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTMLImageElement:跟踪';src&x27;属性,而它';它还没有连接_Javascript_Html_Dom - Fatal编程技术网

Javascript HTMLImageElement:跟踪';src&x27;属性,而它';它还没有连接

Javascript HTMLImageElement:跟踪';src&x27;属性,而它';它还没有连接,javascript,html,dom,Javascript,Html,Dom,我想跟踪尚未附加到文档时对的src属性所做的更改。我的目标是修改图像URL,使用插入的脚本强制使用某个代理服务器。主要使用Image对象进行预加载的脚本是外部(第三方)脚本,因此我不能只搜索并替换任何出现的instance.src=value。我可以控制脚本嵌入的文档,但无法控制脚本本身 我已经尝试在Image元素上定义getter/setter Object.defineProperty( Image.prototype, "src", { get : function(){...

我想跟踪尚未附加到文档时对的src属性所做的更改。我的目标是修改图像URL,使用插入的脚本强制使用某个代理服务器。主要使用Image对象进行预加载的脚本是外部(第三方)脚本,因此我不能只搜索并替换任何出现的
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);
二传手和传手都不叫

当src属性被修改而不修改设置该属性的原始源时,您知道我还可能尝试得到什么通知吗


提前谢谢

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


首先,我不会弄乱内置的原型。其次,
src
是图像对象的属性,因此它是在构造函数中创建的。因此,与其试图覆盖src,不如将您的方法添加到原型中,让它们与
this.src
交互。对不起,我的问题似乎含糊不清。由于它应该是一个通用的解决方案,并且使用第三方代码,我根本无法修改原始源代码,因此无法引入另一个属性。这很奇怪。您不能扩展第三方代码来执行您需要的操作吗?似乎试图修改JS的核心部分是一个坏主意,尤其是考虑到这种解决方案可能在所有浏览器中都不受支持,或者以同样的方式不受支持。我会非常小心和谨慎地对待你的预期路线,我强烈建议重新评估你的路线,看看你是否能找到扩展第三方代码的方法。
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());