图像加载误差的测试条件

时间:2013-06-22 08:07:13

标签: javascript

背景

我正在我的电脑上创建一个本地浏览器应用程序来阅读漫画(日本漫画书)。我试图使应用程序运行几乎与mangareader.com设置完全相同,除了每个漫画页面,mangareader.com有一个不同的网页。我的应用程序使用javscript来导航页面和章节。

现在,我已经设置了代码,这样当我按下右箭头键时,网页上的图像会移到本章的下一页。我有章节和页码的变量用于设置图像源。此应用程序的目录为每个章节都有一个新文件夹。当我在本章的最后一页并尝试运行移动到下一页的功能时,该函数尝试将源设置为不存在的图像文件。例如,如果章节的最后一页是20.png,则该函数将尝试将源设置为21.png。我使用图像对象的onError事件来更改章节编号并将页码重置为1.

问题:

这一切都很有效,直到我尝试使用类似的过程向后导航。我可以在章节中向后移动,但是当我在页面01.png上并且我尝试导航后面的词语时,我需要找到一种方法让函数移动到上一章的最后一页。每章都有不同的页数,所以我不能告诉函数将页码设置为20.png。我需要找到一种方法让我的函数给我最后一章最后一页的页码。我知道所有这些都可以通过数据库轻松修复,甚至可以将章节页面总数存储在数组中,但我正在寻找一种只使用javascript(没有PHP)并且不需要我手动填充的方法阵列。

我迄今为止所尝试过的以及为什么没有这样做:

我设置了一个使用css,display:none隐藏的测试图像。当我尝试从第1页返回时,会触发一个启动setInterval的函数。 SetInterval运行一个函数,将页码增加1,然后重置隐藏图像的源。几乎是本问题第一段中描述的函数的定时版本,除了触发时间,而不是事件触发。因为我希望这个函数最终告诉我文件夹中最后一页的页码是什么,所以我设置onError事件来停止setInterval并记录在变量中正确加载的最后一页。唯一的问题是,根据setInterval的设置速度,它仍然有机会在触发onError之前更新我的测试编号一次或两次,因此该函数可能会返回最后一页为25或26时的真正24理想情况下,这是函数的外观:

var counter = 1;

function findLastPage()
{
timerId = setInterval("checkPage()",1);
}

function checkPage()
{
counter++;
document.getElementById("testImage").src = chapterNumber + "/" + counter + ".png";
if(document.getElementById.onError == true)
    {
    timerId = clearInterval(timerId);
    lastPage = counter - 1;
    }
}

这不起作用的唯一原因是因为onError严格来说是一个事件,并且没有可用作测试条件的布尔值。我也尝试了一个无限的while循环并让onError事件更新了关闭无限循环的变量,但是这个方法远比setInterval方法差。

我真正想要的是:

我正在寻找找到本章最后一页的解决方案。将setInterval更改为1秒而不是每1毫秒工作,但理论上,如果计算机运行速度非常慢,这可能仍然是错误的。我真的希望看到的是一种可以在这里创建测试条件的方法。测试条件允许我在继续使用脚本之前检查页面是否存在。 setInterval脚本的最大问题是在继续使用脚本之前不会停止检查图像是否存在。所以如果有人能给我一个创建测试条件的方法,那就太棒了。提前谢谢。

0 个答案:

没有答案