2014-10-07 95 views
0

我想实现JavaScript页面加载Impresspages 4.2.3上的背景图像更换器,如http://www.9lessons.info/2011/03/background-image-change-on-refresh-with.html所述。它在我的本地主机上工作,但移到我的托管服务器时不起作用。JavaScript背景图片在页面加载更改Impresspage

我把这段代码下面的“_header.php”标签之间:

<script type="text/javascript"> 
var totalCount = 4; 
function ChangeIt() 
{ 
var num = Math.ceil(Math.random() * totalCount); 
document.body.background = 'http://localhost/halmaheradivecruise.com/theme/air/assets/img/'+num+'.jpg'; 
document.body.style.backgroundRepeat = "repeat";// Background repeat 
} 
</script> 

和下面这段代码在标签:

​​
+0

你忘了切换到这个路径:'document.body.background ='http://localhost/halmaheradivecruise.com/theme/air/assets/img/'+num+'.jpg';'到路径您的服务器上的图像? – DrewT 2014-10-07 04:58:06

+0

我将路径更改为www。但仍然无法正常工作...... – user3766934 2014-10-07 05:03:48

+0

为什么脚本中包含'标记? – DrewT 2014-10-07 05:20:45

回答

1

之前黑客的代码,请检查你想实际加载图像是否存在。

以你的代码,你得到的东西是这样的:

http://www.halmaheradivecruise.com/theme/air/assets/img/2.jpg 

如果按照这个链接,你会得到“404未找到”错误。所以问题出在链接而不是脚本。

真正的问题在于基于Unix的系统的区分大小写。 ImpressPages没有文件夹“主题”。所有主题都放在“主题”中。大部分时间的主题也都以大写字母命名。因此,您的图片在这里:

http://www.halmaheradivecruise.com/Theme/BantikAir/assets/img/3.jpg 

在它的工作,因为Windows没有看到小写和大写字母之间有什么区别本地主机。 Unix系统将它们视为不同的路径。

+0

除此之外。在ImpressPages上,您可以使用ip.baseUrl来获取网站的URL。那么你的代码将如下所示: document.body.background = ip。baseUrl +'theme/air/assets/img /'+ num +'。jpg'; 并且可以在任何域上使用。本地主机和生产服务器。 – 2014-10-07 11:20:40

+0

感谢Audrius ...它现在正在工作:D 这只是'区分大小写'问题... – user3766934 2014-10-14 04:15:16

0

除本地主机的路径,没有什么明显的不正确与您的代码

  • 使用开发人员工具检查器,以确保(通常Windows上的mac或f12 cmd + alt +我)和se LECT网络选项卡,确保图像不会得到一个404
  • 也在开发工具使用JavaScript控制台,以确保没有JavaScript错误
  • 如果您仍遇到问题,请确保您要ChangeIt()通话所有脚本都加载之后由手动键入它变成你的浏览器的开发工具

而且JavaScript控制台,而不是:

var num = Math.ceil(Math.random() * totalCount); 

尝试

为什么这是一个更好的方法(均匀分布等),这里
var num = Math.floor(Math.random() * totalCount) + 1 

更多信息:Generate random number between two numbers in JavaScript