wikipedia-cutup
by
hitode909
2011-12-07 [2011/12/07 16:28:38]
Wikipediaの記事をカットアップします
@@ -1,3 +1,4 @@
+
/*
* @title wikipedia-cutup
* @description Wikipediaの記事をカットアップします
@@ -17,34 +18,49 @@
}).success(function(res) {
self.nodes = $(res).find('.mw-content-ltr>*');
self.title = $(res).find('h1').text();
- self.appendTitle();
- var i = 0;
- var timer = setInterval(function() {
- $('#bodyContent').append(self.getNode());
- i++;
- if (i > 100) {
- clearInterval(timer);
- }
- },100);
+ self.success = true;
});
}
Page.prototype = {
- appendTitle: function() {
- $('h1').text(this.title + ' ' + $('h1').text());
- },
getNode: function() {
if (!this.nodes) return null;
return $(selectRandom(this.nodes)).clone();
}
};
-$('#bodyContent').empty();
-$('h1').text('');
-
var i = 0;
-// new Page(location.href);
+var pages = [];
+pages.push(new Page(location.href));
-for(i = 0; i < 5; i++) {
- new Page;
+for (i = 0; i < 5; i++) {
+ pages.push(new Page);
}
+
+$('h1').text('...');
+
+var timer = setInterval(function() {
+ var i;
+ for (i = 0; i < pages.length; i++) {
+ if (!pages[i].success) {
+ return;
+ }
+ }
+
+ $('#bodyContent').empty();
+
+ var titles = [];
+ for (i = 0; i < pages.length; i++) {
+ titles.push(pages[i].title);
+ }
+ $('h1').text(titles.join(' '));
+
+ clearInterval(timer);
+
+ var fragment = document.createFragment();
+ for (i = 0; i < 100; i++) {
+ var page = selectRandom(pages);
+ fragment.appendChild(page.getNode());
+ }
+ $('#bodyContent').append(fragment);
+}, 100);
/*
* @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 || 'http://ja.wikipedia.org/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();
}
};
var i = 0;
var pages = [];
pages.push(new Page(location.href));
for (i = 0; i < 5; i++) {
pages.push(new Page);
}
$('h1').text('...');
var timer = setInterval(function() {
var i;
for (i = 0; i < pages.length; i++) {
if (!pages[i].success) {
return;
}
}
$('#bodyContent').empty();
var titles = [];
for (i = 0; i < pages.length; i++) {
titles.push(pages[i].title);
}
$('h1').text(titles.join(' '));
clearInterval(timer);
var fragment = document.createFragment();
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 です。