【问题标题】:jQuery .load stops video embedded in page / reloads whole pagejQuery .load 停止嵌入页面的视频/重新加载整个页面
【发布时间】:2013-06-16 12:45:39
【问题描述】:

我有一个关于使用 jQuery-.load 重新加载 div 的问题。代码:

    <h1>Official Live-Stream</h1>
    <object width="560" height="315" data="http://www.dailymotion.com/embed/video/x10sbxw"></object>
    </br>
    </br>

    <script>
        (function($)
        {
            $(document).ready(function()
            {
                $.ajaxSetup(
                {
                    cache: false,
                    beforeSend: function() {
                        $('#content').hide();
                        $('#loading').show();
                    },
                    complete: function() {
                        $('#loading').hide();
                        $('#content').show();
                    },
                    success: function() {
                        $('#loading').hide();
                        $('#content').show();
                    }
                });
                var $container = $("#liveracingblog");
                $container.load("../live/addon/addon_ticker.php");
                var refreshId = setInterval(function()
                {
                    $container.load('../live/addon/addon_ticker.php');
                }, 30000);
            });
        })(jQuery);
    </script>

    <div id="liveracingblog"></div>

我遇到的问题是,每 30 秒不仅 liveracingblog-div 重新加载,而且整个页面都会重新加载,这使得嵌入在第 2 行的视频停止。

您可以在这里观察问题:http://www.racingblog.de/racingbloglive/(代码是Wordpress 页面模板的一部分,但我认为这并不重要)

如何解决这个问题?

【问题讨论】:

  • 您是否尝试过使用 $.get() 代替:$.get("../live/addon/addon_ticker.php",function(content){$container.html(content);});
  • 我将$container.load('../live/addon/addon_ticker.php'); 更改为$.get("../live/addon/addon_ticker.php",function(content){$container.html(conten??t);});(我想,这就是你的意思)。还是一样的问题...
  • 是的,我的意思是。如果您将视频替换为图像,是否仍然存在相同的问题?这是为了测试是否是可能导致此行为的 flash 对象。
  • 好的,我已经用图像替换了 flash 对象,我仍然可以看到图像每 30 秒重新加载一次。
  • 我不知道 wordpress 但它可能与它有关。也许尝试将您的脚本标签放在 head 部分,但老实说,我不知道发生了什么

标签: php jquery html reload


【解决方案1】:

我查看了页面,#content div 似乎包含嵌入的视频,您在 js 中隐藏和显示了该视频。您只想隐藏和显示#liveracingblog div

以下更改应该有效:

         $.ajaxSetup(
            {
                cache: false,
                beforeSend: function() {
                    $('#liveracingblog').hide();
                    $('#loading').show();
                },
                complete: function() {
                    $('#loading').hide();
                    $('#liveracingblog').show();
                },
                success: function() {
                    $('#loading').hide();
                    $('#liveracingblog').show();
                }
            });

我还注意到,每 30 秒就会从数据库中提取大量记录,并且因为您使用的是 load() 方法,所以任何向下滚动的用户都将返回到该 div 的顶部。我建议完全忘记隐藏 div。相反,将 load() 替换为 $get 以返回任何新记录(自上次请求以来),然后将这些新记录添加到 #liveracingblog div。

不管怎样,祝你好运,如果你想进一步澄清,请告诉我。阿德里安

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多