0

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

<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 元素,重新创建此脚本标记,将其附加到适当的位置,然后再次运行?

4

3 回答 3

0

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

<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>
于 2013-02-07T16:46:35.177 回答
0

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

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

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

您可以不使用 3rd-party 提供的代码,即用 ajax 替换 div、刷新 iframe 等,但根据我的经验,它总是让您的代码更混乱。

于 2013-02-07T17:52:03.443 回答
-1

由于您标记了 jQuery,我假设您正在使用它。

尝试将单击处理程序添加到刷新按钮,然后使用 .html() 示例: $('#uyan_frame').html('');

当您调用 .html 时,它应该替换您调用它的元素,并且它应该调用您传入的字符串中的任何脚本。作为免责声明,这未经测试。

于 2013-02-07T16:33:59.097 回答