Спасибо waldir за ответ!
Задав вопрос, я провожу собственное исследование и заканчиваю кодом:
window.onload = function() {
httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState !== 4) {
console.log("Not ready, code: %o", httpRequest.readyState);
return;
}
if (httpRequest.status !== 200) {
console.log("Server error: %o", httpRequest.status);
return;
}
var json = JSON.parse(httpRequest.responseText);
console.log("json: %o", json);
var wiki = json.query.pages["1"].revisions[0]["*"];
console.log("wiki: %o", wiki);
var html = InstaView.convert(wiki);
console.log("html: %o", html);
document.getElementById('area').innerHTML = html;
};
var url = 'https://wiki.evil-company.com/api.php?action=query&prop=revisions&format=json&titles=Main_page&rvprop=timestamp|user|comment|content';
httpRequest.open('GET', url, true);
httpRequest.send(null);
}
Здесь я использую https://github.com/cscott/instaview/blob/master/main.js, улучшенный проект http://en.wikipedia.org/wiki/User:Pilaf для преобразования вывода json в HTML на стороне браузера.
Причина этого кода в том, что наша вики устарела или неправильно настроена, а action=render недоступен. Но я попал в ловушку междоменных сценариев, поэтому я думаю, что iframe с action=render — лучшее решение.
См. также Как вы захватываете статья со ссылками в удобном для использования формате?
Еще одно предложение использовать action=parse (http://en.wikipedia.org/w/api.php?action=parse&title=Linux) приводит к предупреждению:
You are looking at the HTML representation of the XML format.
HTML is good for debugging, but is unsuitable for application use.
Specify the format parameter to change the output format.
ОБНОВЛЕНИЕ
Идеальное решение — просто добавить запрос action=render к любому допустимому URL-адресу вики, например:
http://en.wikipedia.org/wiki/Linux?action=render
person
gavenkoa
schedule
01.08.2013