使用jQuery在网站上循环播放图片的缺点

3
我创建了一个漫画网站http://www.hittingtreeswithsticks.com/,如果单击漫画缩略图,将会带您进入完整尺寸的图像(viewimage.php 模板)。
在 viewimage.php 模板中,我使用 javascript/jquery 循环遍历存储在数组中的图像,以便用户无需每次重新加载页面。
这似乎存在两个问题:
1)我还想添加“喜欢/不喜欢”功能,以便您可以对每个图像进行投票,以及Facebook 喜欢按钮(使用户可以针对每个图像选择喜欢)。目前,由于 jQuery 正在循环遍历图像,它没有更新您单击的图像的 ID。 (在此映像中,如果我按右箭头键转到下一个,ID 应该增加到 35)。
2)最终,我想通过广告收入赚钱。消息来源说,如果我使用 jQuery 来获取下一个图像,而不是重新加载页面,广告不会刷新... 并且我将产生更少的广告收入。
所以,我的问题是... Jquery 是否能够处理这些问题,还是必须进行页面刷新以增加 ID 并刷新广告?
谢谢!
window.history.pushState(null, null, 'http://www.hittingtreeswithsticks.com/?action=viewimage&site=comics&id=imgIndex');

代码(这似乎无法正常工作,实际上还阻止了“下一个”代码的运行)

    $("#next").click(function() {
        imgIndex++;
            if (imgIndex > imgArray.length-1) 
            {
                imgIndex = 0;
            }
            img.src = imgArray[imgIndex];
            window.history.pushState(null, null, 'http://www.hittingtreeswithsticks.com/?action=viewimage&site=comics&id=imgIndex');
    });

更新:

错误:

在此输入图片描述


1
jQuery不是问题。问题在于你如何编写函数或配置插件。 - Sparky
@Sparky672 对不起。您能详细说明一下您的第一条评论吗? - user3871
1
你可以使用ajax来刷新/加载内容而不需要刷新页面,例如。这是如何编写你的jQuery或JS代码...而不是jQuery是否能够处理它。 - Sparky
@Sparky672 哦,好的,我明白你的意思了。 - user3871
1个回答

2

关于您的第一个问题,您可以使用pushState()方法。在您替换图像的同时,您也可以更新网址。这将添加新的历史记录条目并替换浏览器中的网址,但实际上不重新加载页面。示例:

window.history.pushState(null, null, 'http://www.hittingtreeswithsticks.com/?action=viewimage&site=comics&id=N&cat=&title=TITLE');

(将 N 和 TITLE 分别替换为相应内容即可解决此问题)。这并非 jQuery 的特性,而是基于原生 JavaScript 实现的。

关于第二个问题,它取决于广告设置方式,通常情况下它们不会自动重新加载。在大多数情况下,您也可以通过 JavaScript 重新加载广告,但具体操作方式取决于广告提供商的详细信息。您可以发布一个单独的问题,并描述广告服务器的运作细节,以了解如何通过 JavaScript 异步加载广告。


谢谢Ben!我甚至从未听说过pushState()这样的东西……你们都是在哪里找到这些东西的?哈哈。我希望我更有资源性。另外,关于异步加载广告的问题,发表一个单独的问题是个好主意。再次感谢。 - user3871
Ben,我刚试了一下,好像不起作用。我已经在底部更新了我的问题。 - user3871
@Growler,我注意到你的问题中有一件事情,那就是你直接传递了 imgIndex 变量;你需要像这样附加变量:window.history.pushState(null, null, 'http://www.hittingtreeswithsticks.com/?action=viewimage&site=comics&id=' + imgIndex);。但我不知道为什么它会阻止函数运行;它应该可以正常工作。你在 JavaScript 控制台中看到任何错误消息吗? - Ben Lee
"对象不支持此属性或方法"。请参见上面更新的问题中的图像。 - user3871

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接