相关疑难解决方法(0)

检测何时无法在Javascript中加载图像

有没有办法确定图像路径是否会导致实际图像,即检测到图像无法在Javascript中加载.

对于Web应用程序,我正在解析xml文件并从图像路径列表中动态创建HTML图像.服务器上可能不再存在某些映像路径,因此我希望通过检测哪些映像无法加载并删除该HTML img元素来优雅地失败.

注意JQuery解决方案无法使用(老板不想使用JQuery,是的,我知道不要让我开始).我知道在JQuery中检测图像何时加载的方法,但不知道它是否失败.

我的代码创建img元素,但我如何检测img路径是否导致无法加载图像?

var imgObj = new Image();  // document.createElement("img");
imgObj.src = src;
Run Code Online (Sandbox Code Playgroud)

javascript onerror imagesource image-loading

88
推荐指数
6
解决办法
8万
查看次数

没有扩展名在网络上投放图像是否安全?

我将所有*.jpg文件视为静态,但我需要动态地提供一些.我可以简单地省略扩展名,这样我就不必对我的网址规则感到满意吗?仅在标题中设置文件类型是否足够?

image

17
推荐指数
1
解决办法
2375
查看次数

JavaScript img.src onerror事件 - 获取错误原因

<img>加载错误可能有不同的原因,例如网络错误响应,图像数据错误......

error收到的对象onerror似乎没有说明确切的原因.

有没有办法知道错误是由于网络错误,比如说HTTP 500还是网络超时?

编辑:不是在寻找一种加载资源的替代方法,例如AJAX请求.我需要专门针对事件<img>标记的答案onerror.原因是我正在使用这种方法进行像素跟踪,我需要一种方法来重试网络错误.我也没有寻找其他跟踪方法,如JSONP.

javascript

7
推荐指数
1
解决办法
6543
查看次数

在setTimeout之后返回变量

我只是在setTimeout回调中设置后才尝试返回变量.我想不出有任何其他方法可以做到这一点,但这是我的尝试(我知道代码似乎很愚蠢,但它是解决Cordova错误).由于我理解的原因,它导致无限循环.

function isConnected() {
    var done = false;
    setTimeout(function() {
        done = true;
    }, 500);

    while (!done) {}
    return navigator.connection.type!== Connection.NONE;
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释为什么会发生这种情况,或提供替代方案吗?

更新(解决方案):

function isConnected(callback) {
    setTimeout(function() {     
        callback(navigator.connection.type !== Connection.NONE);
    }, 500);
}


isConnected(function(connected) {
    if (!connected)
        alert('Not Connected');
});
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous settimeout

3
推荐指数
2
解决办法
3075
查看次数