Javascript Internet连接测试不起作用

问题描述

| 我是javascript的新手,最近开始学习它。无论如何,我有一个奇怪的问题。我在此代码中进行了两项检查:服务器连接检查和Internet连接检查。服务器实际上是物理连接到客户端计算机的,我在启动时每3秒钟检查一次连接,以便一旦服务器启动并运行,客户端将自动启动。现在,客户端具有google-earth插件,因此我想进行Internet连接检查,以便在没有Internet时无需google-earth(和相关代码)就可以启动应用程序。但是,如果我尝试同时执行这两项检查,则应用程序似乎挂起。这让我发疯了,因为它们两个都可以独立运行,但是当它们组合在一起时它们会失败。 同样,在此代码中,图像srcs都指向同一事物。我这样做是为了使你们更容易测试它。无论如何,这是代码
<html>
<head>
</head>
<body>
<script type=\"text/javascript\">
         document.getElementsByTagName(\'body\')[0].innerHTML +=
         \'<img id=\"testimage\" style=\"display: none;\" \' + 
         \'src = http://i.microsoft.com/about/shared/templates/components/mscomFooter/logo.png?\' + Math.random() + \'\" \' + 
         \'onerror=\"fail();\" \' + \'onload=\"test2();\">\';
         function fail()
         {
            alert(\"fail\")
         }

         function pass()
         {
            alert(\"pass\")
         }

         function test2()
         {
             document.getElementsByTagName(\'body\')[0].innerHTML +=
             \'<img id=\"testimage2\" style=\"display: none;\" \' + 
             \'src = http://i.microsoft.com/about/shared/templates/components/mscomFooter/logo.png?\' + Math.random() + \'\" \' + 
             \'onerror=\"fail();\" \' + \'onload=\"pass();\">\';
         }
</script>
</body>
</html>
    

解决方法

        尝试以下方法:
<html>
<head>
</head>
<body>
<div id=\"a\"></div>
<div id=\"b\"></div>
<script type=\"text/javascript\">
         document.getElementById(\'a\').innerHTML +=
         \'<img id=\"testImage\" style=\"display: none;\" \' + 
         \'src = http://i.microsoft.com/about/shared/templates/components/mscomFooter/logo.png?\' + Math.random() + \'\" \' + 
         \'onerror=\"fail();\" \' + \'onload=\"test2();\">\';
         function fail()
         {
            alert(\"fail\")
         }

         function pass()
         {
            alert(\"pass\")
         }

         function test2()
         {
             document.getElementById(\'b\').innerHTML +=
             \'<img id=\"testImage2\" style=\"display: none;\" \' + 
             \'src = http://i.microsoft.com/about/shared/templates/components/mscomFooter/logo.png?\' + Math.random() + \'\" \' + 
             \'onerror=\"fail();\" \' + \'onload=\"pass();\">\';
         }
</script>
</body>
</html>
我在做什么不同? 首先,我没有操纵document.body的innerHTML。我正在操纵两个不同的div(稍后对此进行详细介绍)。修改innerHTML可能会有一些问题,某些事情无法在现有框架中正确注册,因此它们并不总是能够按预期运行。即使这不会引起问题,也通常会对此表示反对。 其次,我使用了两个不同的位置来加载两个不同的图像。您的两个脚本在谁都按相同顺序执行时,对谁按什么顺序执行有些争执。我只是分开了哈特菲尔德一家和麦考伊一家,而阿巴拉契亚斯的一切都很好。     ,        代替
document.getElementsByTagName(\"body\")[0]
,使用
document.body
。一样,但是容易。
document.head
document.title
document.documentElement (html tag)
document.applets
8ѭ,
document.embeds
document.forms
document.images
也一样