如何使用iframe而不是ajax重新加载网页的部分内容?

4
我不想使用ajax的原因是,我想要刷新的部分实际上是由其他人实现的评论插件。我只需在我的html代码中放置他们提供的脚本片段,就可以在文章下方显示评论部分。由于它不是一个实时评论,所以我想添加一个刷新按钮,让用户可以刷新评论部分以获取最新评论,而无需重新加载整个页面。
因此,我认为iframe可能是我的选择。但问题是我需要指定iframe的src属性。我不知道应该使用什么值,因为我只有一个脚本片段。有人能给我任何建议吗?
顺便说一下,代码片段如下:
<div id="uyan_frame"></div>
<script type="text/javascript" id="UYScript" src="http://v1.uyan.cc/js/iframe.js?UYUserId=1674366" async=""></script>

你能否包含你现在粘贴的脚本包含的代码?如果我们不知道脚本如何工作,很难确定如何添加它。 - Ben McCormick
我们可以猜测这个片段的含义,但这只是猜测,直到您向我们展示它。 - Mark Schultheiss
@ben336 我已经包含了代码片段。 - chaonextdoor
@MarkSchultheiss 我已经包含了代码片段。 - chaonextdoor
2
这种方法论在我看来有点可疑...只是说一下。 - Mark Schultheiss
@MarkSchultheiss 这实际上是像 Disqus 这样的主要评论系统的工作方式,通过 iframe。 - Christophe
3个回答

3

只需创建一个包含你所说脚本的html页面,并将该文件用作iframe src属性中的文件。


2
您可以像这样将上面的代码片段放入html文件中。
<!DOCTYPE html>
<html>
    <body>
         <div id="uyan_frame"></div>
         <script type="text/javascript" id="UYScript" src="http://v1.uyan.cc/js/iframe.js?UYUserId=1674366" async=""></script>
    </body>
</html>

然后将该文件用作iFrame的src,您可以使用JavaScript刷新该iFrame。

话虽如此,仅仅因为你能做某事,并不意味着你应该这样做。这是一种非常hacky的方式来实现你想要做的事情。以下是几个替代选项:

  1. 了解您正在使用的脚本的功能,并与之配合。根据片段中脚本和div的名称,它可能首先创建一个iFrame。如果是这种情况,为什么不使用浏览器调试工具找出该iFrame的名称并手动刷新它,或者修改脚本以执行此操作?

  2. 使用实时更新框架-这可能对您来说不可能,我不知道您的限制,但有很多很棒的评论框架可以进行实时更新。例如Disqus。其他示例包括Facebook评论或嵌入对外部网站的引用,如Branch

  3. 使用Ajax-我有点不清楚这是您编写的脚本还是第三方脚本。如果这是您的脚本,请使用通常接受的方法来执行此类工作,除非你真的有一个很好的理由不这样做。您将获得更好的支持,您将获得更普遍适用的经验,并且在大多数情况下,最佳实践之所以得到这个名称是有原因的。人们使用“ajax”方法来实时更新页面,因为它是有效和有用的。框架已经变得越来越不常见了,因为它们笨重且使页面的不同部分难以相互交互。如果您没有一个很好的理由不使用通用实践,那么这通常是您最好的选择。


非常感谢您提供这些宝贵的信息。您能否为我列举几个其他的实时评论框架?谢谢! - chaonextdoor
我添加了另外两个例子。我绝对推荐Disqus。它是这种类型软件中使用最广泛的。 - Ben McCormick

0
你可以这样做:
var iframe = document.getElementById('your_frame_id');
iframe.src = iframe.src;

将 iframe 的 src 属性重新设置为其当前值,这将导致框架刷新,并且适用于跨域框架。


谢谢,但现在的问题是如何创建这个iframe而不是如何刷新iframe。 - chaonextdoor
创建一个HTML页面,将脚本包含在其中,然后在您的主页面中使用iframe显示新页面。但是这对我来说真的看起来很丑:/ - machour

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