I have a very interesting task:
I have few "images" like that:
var image = new Image();
image.src='https://www.hootv.lt/bitrix/spread.php?s=QklUUklYX1NNX1VJREgBbjVkZXNEQ2IzVnU4ckRSSmlCbW82R0xKdmNWcUV2UzUBMAEvAQExATECQklUUklYX1NNX1VJREwBMzcwNjU0NTQyMDcBMAEvAQExATECQklUUklYX1NNX1VJREQBMjVwbmJzNjNkY2VrNGRuZ2VmaGEyYXZsMm1taGh6YWMBMTcyNjMzNjUzMAEvAQExATECQklUUklYX1NNX05DQwFZATE3MjYzMzY1MzABLwEBAQJCSVRSSVhfU01fQ0MBATABLwEBAQI%3D&k=c545bd21253d81d854fc3698d4b20854';
An image src is a PHP page which returns nothing. I have to check whenever all images generate error, than continue executing script.
So my script should look like something like that:
<script> - My code
var image = new Image();
image.src='url1';
var image = new Image();
image.src='url2';
var image = new Image();
image.src='url3';
...
var image = new Image();
image.src='url33';
</script>
(after all images generate onerror event continue with)
<script> - CMS generated code I cannot change
windows.location.href = "..."; (i cannot change line, all I can do is inject the script above)
</script>
I tried the following but obviously it's not working:
while (!image.error) {
//wait
}
First of all I would like to say big thanks to @CherryDT and @AztecCodes for being so involved in my problem!
It seems like the problem I faced doesn't have a straightforward solution so I ended up modifying CMS source code for my needs.
var srcs = [
...
];
var promises = [];
$.each(srcs, function(key, src) {
promises.push(new Promise(function(resolve) {
var image = new Image();
image.src = src;
image.onerror = function() {
resolve();
}
}));
});
$.when.apply($, promises).then(function() {
//redirect here
});