wikipedia-cutup
by
hitode909
2011-12-07 [2011/12/07 16:28:38]
Wikipediaの記事をカットアップします
@@ -12,7 +12,7 @@
function Page(url) {
var self = this;
$.ajax({
- url: url || 'http://ja.wikipedia.org/wiki/Special:Randompage',
+ url: url || '/wiki/Special:Randompage',
dataType: 'html'
}).success(function(res) {
self.nodes = $(res).find('.mw-content-ltr>*');
@@ -36,7 +36,9 @@
pages.push(new Page);
}
-$('h1').text('...');
+var h1 = $('h1');
+
+h1.text('...');
var timer = setInterval(function() {
var i;
@@ -49,10 +51,10 @@
$('#bodyContent').empty();
var titles = [];
+ h1.text('');
for (i = 0; i < pages.length; i++) {
- titles.push(pages[i].title);
+ h1.append($('<a>').attr('href', '/wiki/' + encodeURIComponent(pages[i].title)).text(pages[i].title));
}
- $('h1').text(titles.join(' '));
clearInterval(timer);
/*
* @title wikipedia-cutup
* @description Wikipediaの記事をカットアップします
* @include http://ja.wikipedia.org/wiki/
* @license MIT License
*/
function selectRandom(list) {
return list[Math.floor(Math.random() * list.length)];
};
function Page(url) {
var self = this;
$.ajax({
url: url || '/wiki/Special:Randompage',
dataType: 'html'
}).success(function(res) {
self.nodes = $(res).find('.mw-content-ltr>*');
self.title = $(res).find('h1').text();
self.success = true;
});
}
Page.prototype = {
getNode: function() {
if (!this.nodes) return null;
return $(selectRandom(this.nodes)).clone()[0];
}
};
var i = 0;
var pages = [];
pages.push(new Page(location.href));
for (i = 0; i < 5; i++) {
pages.push(new Page);
}
var h1 = $('h1');
h1.text('...');
var timer = setInterval(function() {
var i;
for (i = 0; i < pages.length; i++) {
if (!pages[i].success) {
return;
}
}
$('#bodyContent').empty();
var titles = [];
h1.text('');
for (i = 0; i < pages.length; i++) {
h1.append($('<a>').attr('href', '/wiki/' + encodeURIComponent(pages[i].title)).text(pages[i].title));
}
clearInterval(timer);
var fragment = document.createDocumentFragment();
console.log(pages[0].getNode());
for (i = 0; i < 100; i++) {
var page = selectRandom(pages);
fragment.appendChild(page.getNode());
}
$('#bodyContent').append(fragment);
}, 100);
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。