【问题标题】:Is there a way to embed and style a Wikipedia article in a website?有没有办法在网站中嵌入和设置维基百科文章的样式?
【发布时间】:2014-12-22 00:36:37
【问题描述】:

我想要做的基本上是一个 div 元素,其中包含维基百科文章的打印友好版本。我使用 iframe 嵌入文章并且它可以工作,但我无法为文档设置样式。我想这是因为 iframe 内容不在我的域中,而且我没有编辑权限。有没有办法在加载 iframe 后将 css 样式应用于内容?

【问题讨论】:

  • 用服务器端脚本下载,修改css路径等,将结果插入到你的页面中。
  • 谢谢。不幸的是,我缺乏进行服务器端下载的知识。你会为此使用 PHP 吗?
  • PHP、Perl、Python、.. 任何你可以在服务器端运行的东西。甚至通过 wget + bash
  • 这个embed.ly/provider/wikipedia(第三方服务)怎么样

标签: javascript jquery html css iframe


【解决方案1】:

您可以使用 AJAX 执行此操作,方法是使用自定义查询字符串参数调用 wiki api。

演示http://jsfiddle.net/fm0vxg32/

JS

$(document).ready(function(){

    $.ajax({
        type: "GET",
        url: "http://en.wikipedia.org/w/api.php?action=parse&format=json&prop=text&section=0&page=Jimi_Hendrix&callback=?",
        contentType: "application/json; charset=utf-8",
        async: false,
        dataType: "json",
        success: function (data, textStatus, jqXHR) {

            var markup = data.parse.text["*"];
            var blurb = $('<div></div>').html(markup);
            $('#article').html($(blurb).find('p'));

        },
        error: function (errorMessage) {
        }
    });
});

CSS

#article {
  // custom styling
}

【讨论】:

  • contentType: "application/json; charset=utf-8" - 您没有发出 POST 或 PUT 请求,因此没有请求正文来描述其内容类型。 async: false 在发出 HTTP 请求时阻止所有 JS,99.99% 的时间,这是一个糟糕的主意。
  • 哇,这是迄今为止最简单和最好的解决方案。尽管 API 似乎只给了我页面的介绍性文本。是否可以在设置中更改此行为?
  • 正如@Quentin 已经提到的,几乎没有允许使用async: false 的用例。使用微调器,在内容可用时立即淡入或通知用户发生了某些事情。除了那个有用的答案。
  • 我注意到当我更改网址中的section=0 时,我可以加载文章的不同段落。有没有加载整篇文章的方法?
  • @YuliyanIlev:省略section参数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多