Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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 在Safari中未定义的对象原型中新添加的函数/属性_Javascript_Jquery_Safari_Prototype - Fatal编程技术网

Javascript 在Safari中未定义的对象原型中新添加的函数/属性

Javascript 在Safari中未定义的对象原型中新添加的函数/属性,javascript,jquery,safari,prototype,Javascript,Jquery,Safari,Prototype,以下load功能在macOS上的Safari中未被识别,但在Chrome和Firefox中可以完美地工作(截至目前,所有这些功能都在最新的稳定版本上,jquery是v3.1.0): Safari报告说: jQuery.Deferred exception: img.load is not a function. (In 'img.load(imgURL)', 'img.load' is undefined) 我不明白,Image.prototype.load显然是在上面几行声明的。在研究Saf

以下
load
功能在macOS上的Safari中未被识别,但在Chrome和Firefox中可以完美地工作(截至目前,所有这些功能都在最新的稳定版本上,jquery是v3.1.0):

Safari报告说:

jQuery.Deferred exception: img.load is not a function. (In 'img.load(imgURL)', 'img.load' is undefined)
我不明白,
Image.prototype.load
显然是在上面几行声明的。在研究Safari上的
jquery
load
问题时,我遇到了一些似乎已经在更新中解决的问题。我没有遇到任何显示
load
函数在
图像
对象上被归类为未定义对象的情况

MDN web文档建议使用Safari创建
object.prototype

我被难住了。似乎没有提到这个地区与Safari不兼容的问题。SO和其他地方的类似问题通常以范围或订单问题结束。这仍然是我最好的预感,但我已经一遍又一遍地重复这一点,并试图转换订单,只是为了实证证据,这不是问题所在。这些都导致了可理解的
未定义的
错误,但这。。。我不能四处走动

JSFIDLE中的工作示例:

如果在大多数浏览器中检查控制台,它会报告:

Uncaught ReferenceError: createImgElement is not defined
    at XMLHttpRequest.xmlHTTP.onloadend ((index):64)
这是有道理的,我没有在示例中提供该函数。但是,在Safari中运行该示例,并没有看到该函数不存在。相反,它会在报告后中止:

TypeError: img.load is not a function. (In 'img.load(imgURL)', 'img.load' is undefined)

更新
console.log(img)
在创建对象后立即成功地报告对象的存在,并且在所有浏览器中都没有错误

console.log(img.\uu proto\uu)
同时显示
load
出现在Chrome和Firefox上,但在Safari的功能列表中不存在。有关声明
Image.prototype.load=function()
的某些内容不符合Safari的要求,即这是要附加到继承对象的函数


我的问题代码简化为最简单的形式,但仍然产生相同的错误:

Image.prototype.load = function () {
    console.log('Success!');
};

var img = new Image();
img.load(); // produces the same undefined error
但是,如果我创建自己的对象,它会工作吗

function testObject() {};

testObject.prototype.load = function () {
    console.log('Success!');
};

var img = new testObject();
img.load(); // outputs 'success!'

关于使用已建立的javascript对象的某些内容在Safari中不起作用。如何正确定义此问题?

此问题的较新版本中的一位用户留下了一条评论,使我怀疑这可能是我的Safari版本(10.1)的一个错误,它是我使用的macOS版本(10.12.4)的最新版本,但是macOS最新版本(10.12.6)的最新版本(10.1.2)

我刚刚将macOS和Safari升级到这些最新版本,问题依然存在。意外但有助于隔离问题所在。我禁用了所有的扩展,突然它就工作了。沮丧的是,我最初没有尝试这个(我不认为javascript的核心方面会受到影响),我分别尝试了每个扩展,发现罪魁祸首是uBlock源的当前测试版

我还没有一个解决方案(除了不使用扩展),但至少有一个答案,并且不会向他们提出这个问题

function testObject() {};

testObject.prototype.load = function () {
    console.log('Success!');
};

var img = new testObject();
img.load(); // outputs 'success!'