除了AJAX和iframe之外,还有其他方法可以刷新页面的一部分吗?

时间:2013-02-07 16:28:46

标签: javascript jquery html ajax

我现在正在使用第三方评论插件,它提供的是一段脚本,如下所示:

<div id="uyan_frame"></div>
<script type="text/javascript"
        id="UYScript"
        src="http://v1.uyan.cc/js/iframe.js?UYUserId=1674366" async="">
</script>

因为它不是一个实时评论插件,我想在它旁边添加一个刷新按钮来手动重新加载它以查看最新的评论而不是重新加载整个页面。(我知道Disqus是一个很好的评论插件,但是我们针对中国用户,我必须使用当前的用户。)

由于它是第三方插件,我对它没有太多控制权。我也认为iframe是一种丑陋的方式来实现这个令人耳目一新的东西。那么,有没有其他方法来实现这一目标?就像每次单击刷新按钮一样,它会删除此脚本生成的所有HTML元素,重新创建此脚本标记,将其附加到适当的位置,然后再次运行它?

3 个答案:

答案 0 :(得分:0)

你不必使用iframe,因为它很慢。你可以做的是创建一个div或section并给它一个id或类,然后创建一个按钮,单击该按钮将获取一个脚本并在你创建的div或section中追加正确的html内容。为了更容易理解代码看起来像这样。

<section id="content"></section>
<button id="refresher"></button>
<script>

$('#refresher').click(function(){
    //Load your script like so
    $.getScript('url of the script you are trying to get', function(){...})

    //Load your content here
    $('#content').html('Current contents will be erased and will be replaced by whatever you placed here')

    //...or if you need ajax fetching 
    $.ajax({
      url: url,
      success: function(){
        $('#content').html('place your content here and this will erase old content')
      }
    });

})

</script>

答案 1 :(得分:0)

我会问第三方公司如何刷新评论而不刷新整个页面。他们确实开发了这个,他们必须有办法轻松刷新它。

例如,UYComment.refresh(document.getElementById('comment'))

如果你不想问他们的javascript代码,你也可以找到这种解决方案。

你可以不使用第三方提供的代码,即ajax替换div,刷新iframe等,但是,根据我的经验,它总是让你的代码变得更加混乱。

答案 2 :(得分:-1)

因为你标记了jQuery,我假设你正在使用它。

尝试在点击按钮中添加点击处理程序,然后使用.html() 例: $( '#uyan_frame')的html( '');

当您调用.html时,它应该替换您调用它的元素,它应该调用您传入的字符串中的任何脚本。就像免责声明一样,这不会被测试。