2016-11-06 242 views
1

我想在页面加载时通过javascript在后台填充图像。我尝试了下面的代码片段 - 我尝试在Chrome本地以及本地主机上运行它,但它在Firefox,Safari和所有其他浏览器中都不显示图像。Javascript只能在Chrome浏览器中工作,但不能使用其他浏览器

var body = document.body, 
    html = document.documentElement; 

var height = Math.floor(Math.min(body.scrollHeight)); 
for(i=0; i<height; i++){ 
    var images = [], 
    index = 0; 
    images[0] = "<img id='rel' src='http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg'>"; 

    images[1] = "<img id='rel1' src='http://ia.media-imdb.com/images/M/[email protected]@._V1_SX300.jpg'>"; 

    images[2] = "<img id='rel2' src='http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg'>"; 

    images[3] = "<img id='rel' src='http://ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg'>"; 

    images[4] = "<img id='rel1' src='http://ia.media-imdb.com/images/M/[email protected]@._V1_SX300.jpg'>"; 

    images[5] = "<img id='rel2' src='http://ia.media-imdb.com/images/M/[email protected]@._V1_SX300.jpg'>"; 

    images[6] = "<img id='rel' src='http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg'>"; 

    images[7] = "<img id='rel1' src='http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg'>"; 

    images[8] = "<img id='rel2' src='http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg'>"; 

    images[9] = "<img id='rel' src='http://ia.media-imdb.com/images/M/MV5BMTAzZmJiOGQt[email protected]._V1_SX300.jpg'>"; 

    images[10] = "<img id='rel1' src='http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg'>"; 

    images[11] = "<img id='rel2' src='http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg'>"; 

    images[12] = "<img id='rel' src='http://ia.media-imdb.com/images/M/[email protected]@._V1_SX300.jpg'>"; 

    images[13] = "<img id='rel1' src='http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg'>"; 

    images[14] = "<img id='rel2' src='http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg'>"; 

    index = Math.round(Math.random() * images.length); 

    document.write(images[index]); 
} 

和HTML:

<body> 
    <div id="continer"> 
    <script type="text/javascript" src="images.js"></script> 
    </div> 
+0

控制台中的任何错误? – vlaz

+0

@adeneo ...显然,当我没有看到它在那里。即使我复制并粘贴它...它仍然是错误的 - 它可以返回大于最大索引的索引。 – vlaz

+0

@vlaz - 是的,它可以,正确的方法确实是'Math.floor' – adeneo

回答

0

在Firefox和其他一些浏览器,滚动条不附接到所述主体,但documentElement<html>标签。

你要检查哪一个真正有scrollHeight

var body = document.body, 
    html = document.documentElement; 

var bodyHeight = Math.floor(Math.min(body.scrollHeight)); 
var htmlHeight = Math.floor(Math.min(html.scrollHeight)); 

var height = Math.max(bodyHeight, htmlHeight); 

for(i=0; i<height; i++){ ... 
0

因为你的代码指的是身体和页面的视觉元素,你需要在页面加载后执行脚本。我修改了你的代码,现在可以在Chrome,IE和FF中使用。

最重要的更改是从onLoad()事件运行脚本。

<body onload="showImages();"> 

注意为了简洁起见,我在这里剪出大量图像数组插入。

<html> 
<head> 
</head> 
<script> 
function showImages() { 
var body = document.body, 
    html = document.documentElement; 

var height = Math.floor(Math.min(body.scrollHeight)); 
for(i=0; i<height; i++){ 
var images = [], 
index = 0; 
images[0] = "<img id='rel' src='http://ia.media-imdb.com/images/M/[email protected]_V1_SX300.jpg'>"; 

images[1] = "<img id='rel1' src='http://ia.media-imdb.com/images/M/[email protected]@._V1_SX300.jpg'>"; 

// ... 

index = Math.round(Math.random() * images.length); 

document.write(images[index]); 

} 
} 
</script> 
<body onload="showImages();"> 
<div id="continer">`` 

</div> 
相关问题