- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
macOS 上的 Safari 无法识别以下load
函数,但在 Chrome 和Firefox(截至今天,所有版本都在最新的稳定版本中,jquery 是 v3.1.0):
Image.prototype.load = function (url) {
var thisImg = this;
xmlHTTP = new XMLHttpRequest();
xmlHTTP.open('GET', url, true);
xmlHTTP.responseType = 'arraybuffer';
xmlHTTP.onload = function (e) {
var blob = new Blob([this.response]);
thisImg.src = window.URL.createObjectURL(blob);
};
xmlHTTP.onprogress = function (e) {
var percLoaded = parseInt((e.loaded / e.total) * 100);
thisImg.completedPercentage = percLoaded;
};
xmlHTTP.onloadstart = function () {
thisImg.completedPercentage = 0;
};
xmlHTTP.onloadend = function() {
thisImg.completedPercentage = 100;
// put the image blob we just created in the dom
createImgElement(index, img);
};
xmlHTTP.onabort = function() {
console.log('abort called.');
};
xmlHTTP.send();
};
Image.prototype.completedPercentage = 0;
var imgURL = '/folder/example.jpg';
var img = new Image();
img.load(imgURL);
Safari 报告说:
jQuery.Deferred exception: img.load is not a function. (In 'img.load(imgURL)', 'img.load' is undefined)
我不明白,因为 Image.prototype.load
非常明显地在其上方的几行中声明。在 Safari 上研究 jquery
load
问题时,我遇到了一些似乎已在更新中解决的问题。我还没有遇到任何显示 Image
对象之上的 load
函数被归类为 undefined 的东西。
MDN 网络文档建议object.prototype
is compatible使用 Safari。
我很困惑。似乎没有提及这方面与 Safari 的不兼容性。 SO 和其他地方的类似问题通常以范围或顺序问题告终。这仍然是我最好的预感,但我已经一次又一次地检查这个并尝试切换订单只是为了经验证据这不是问题。这些都导致了可以理解的 undefined
错误,但这......我无法理解。
https://jsfiddle.net/14no0q12/
如果您在大多数浏览器中检查控制台,它会报告:
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.__proto__)
在同一点显示 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) 但最新版本 (10.1.2) 是 macOS (10.12.6) 的最新版本.
我刚刚将 macOS 和 Safari 升级到这些最新版本,但问题仍然存在。意外但有助于隔离问题所在。我禁用了所有扩展程序,突然它就可以工作了。沮丧的是我最初没有尝试这个(我认为 javascript 的核心方面不会受到影响)我单独尝试了每个扩展并发现罪魁祸首是 uBlock Origin 的当前测试版。。 p>
我还没有解决方案(除了不使用扩展),但至少有一个答案,并且不会向他们提出问题。
关于javascript - 向 Safari 中 undefined object 原型(prototype)新添加的函数/属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46051149/
我遵循了一本名为“Sitepoint Full Stack Javascript with MEAN”的书中的教程,我刚刚完成了第 6 章,应该已经创建了一个带有“数据库”的“服务器”。数据库只不过是
在 Jquery 中,我创建两个数组,一个嵌入另一个数组,就像这样...... arrayOne = [{name:'a',value:1}, {name:'b',value:2}] var arra
这个问题在这里已经有了答案: What is the explanation for these bizarre JavaScript behaviours mentioned in the 'Wa
我被放在别人的代码上,有一个类用作其他组件的基础。当我尝试 ng serve --aot(或 build --prod)时,我得到以下信息。 @Component({ ...,
我正在测试一些代码,并使用数据创建了一个 json 文件。 问题是我在警报中收到“[object Object],[object Object]”。没有数据。 我做错了什么? 这是代码:
我想打印 [object Object],[object Object] 以明智地 "[[{ 'x': '1', 'y': '0' }, { 'x': '2', 'y': '1' }]]"; 在 ja
我有一个功能 View ,我正在尝试以特殊格式的方式输出。但我无法让列表功能正常工作。 我得到的唯一返回是[object Object][object Object] [object Object]
在使用优秀的 Sim.js 和 Three.js 库处理 WebGL 项目时,我偶然发现了下一个问题: 一路走来,它使用了 THREE.Ray 的下一个构造函数: var ray = new THRE
我正在使用 Material UI 进行多重选择。这是我的代码。 {listStates.map(col => (
我的代码使用ajax: $("#keyword").keyup(function() { var keyword = $("#keyword").val(); if (keyword.
我遇到了下一个错误,无法理解如何解决它。 Can't resolve all parameters for AuthenticationService: ([object Object], ?, [o
我正在尝试创建一个显示动态复选框的表单,至少应选中其中一个才能继续。我还需要获取一组选中的复选框。 这是组件的代码: import { Component, OnInit } from '@angul
我正在开发 NodeJs 应用程序,它是博客应用程序。我使用了快速验证器,我尝试在 UI 端使用快速闪存消息将帖子保存在数据库中之前使用闪存消息验证数据,我成功地将数据保存在数据库中,但在提交表单后消
我知道有些人问了同样的问题并得到了解答。我已经查看了所有这些,但仍然无法解决我的问题。我有一个 jquery snipet,它将值发送到处理程序,处理程序处理来自 JS 的值并将数据作为 JSON 数
我继承了一个非常草率的项目,我的任务是解释为什么它不好。我注意到他们在整个代码中都进行了这样的比较 (IQueryable).FirstOrDefault(x => x.Facility == fac
我只是在删除数组中的对象时偶然发现了这一点。 代码如下: friends = []; friends.push( { a: 'Nexus', b: 'Muffi
这两个代码片段有什么区别: object = nil; [object release] 对比 [object release]; object = nil; 哪个是最佳实践? 最佳答案 object
我应该为其他人将从中继承的第一个父对象传递哪个参数,哪个参数更有效 Object.create(Object.prototype) Object.create(Object) Object.creat
我在不同的对象上安排不同的选择器 [self performSelector:@selector(doSmth) withObject:objectA afterDelay:1]; [self per
NSLog(@"%p", &object); 和 NSLog(@"%p", object); 有什么区别? 两者似乎都打印出一个内存地址,但我不确定哪个是对象的实际内存地址。 最佳答案 这就是我喜欢的
我是一名优秀的程序员,十分优秀!