(function(scripts, callback, errorback) {
if (typeof errorback != 'function')
errorback = function(url) { alert('jsloader load error: ' + url) };
var cssRegexp = /.css$/;
var load = function(url) {
if (cssRegexp.test(url)) {
var link = document.createElement('link');
link.href = url;
link.type = 'text/css';
link.rel = 'stylesheet';
(document.getElementsByTagName('head')[0] || document.body).appendChild(link);
if (scripts.length) {
load(scripts.shift());
} else {
callback();
}
} else {
var script = document.createElement('script');
script.type = 'text/javascript';
script.charset = 'utf-8';
var current_callback;
if (scripts.length) {
var u = scripts.shift();
current_callback = function() { load(u) }
} else {
current_callback = callback;
}
if (window.ActiveXObject) { // IE
script.onreadystatechange = function() {
if (script.readyState == 'complete' || script.readyState == 'loaded') {
current_callback();
}
}
} else {
script.onload = current_callback;
script.onerror = function() { errorback(url) };
}
script.src = url;
document.body.appendChild(script);
}
}
load(scripts.shift());
})(["http://nehan.googlecode.com/hg/nehan5.min.js","http://nehan.googlecode.com/hg/nehan5.css"], function() {
/*
* @title たてがき!
* @description 「小説家になろう」をiPhoneで縦書きにして読む
* @include http://*
* @license MIT License
* @require http://nehan.googlecode.com/hg/nehan5.min.js
* @require http://nehan.googlecode.com/hg/nehan5.css
*/
//本文(divタグ)を取得
var targetNode=document.getElementById("novel_honbun");
//PagedElementの作成
var paged_element = Nehan.createPagedElement();
//スタイルの設定
paged_element.setStyle("body", {
"flow":"tb-rl", // 縦書きモード。横書きなら"lr-tb"にする。
"width":640,
"height":732,
"font-size":16 // fontSize(camel case)とは書けない。
});
//ページ内容をセット
//paged_element.setContent(targetNode.innerHTML);
/*
paged_element.setContent(targetNode.innerHTML, {
onComplete : function(time){
console.log("page_count = %d", paged_element.getPageCount());
console.log("outline element = %o", paged_element.engine.createOutlineElement());
}
});
*/
paged_element.setContent(targetNode.innerHTML, {
onProgress : function(tree){
console.log("%d page(%d percent) is done", tree.pageNo, tree.percent);
},
onComplete : function(time){
console.log("finish! %f time", time);
}
});
//組版結果のDOMを取得
var element = paged_element.getElement();
//本文を組版結果に置換
targetNode.parentNode.replaceChild(element,targetNode);
// 進むボタン
var NextButton = document.createElement('input');
NextButton.type = "button";
NextButton.value = "<進む";
NextButton.id = "next-button";
// 戻るボタン
var PrevButton = document.createElement('input');
PrevButton.type = "button";
PrevButton.value = "戻る>";
PrevButton.id = "prev-button";
var ButtonArea = document.createElement('div');
ButtonArea.style.textAlign = "center";
ButtonArea.innerHTML = "
";
ButtonArea.appendChild(NextButton);
ButtonArea.innerHTML = ButtonArea.innerHTML + " ";
ButtonArea.appendChild(PrevButton);
ButtonArea.innerHTML = ButtonArea.innerHTML + "
";
element.appendChild(ButtonArea);
// ボタンを配置
//element.appendChild(NextButton);
//element.appendChild(PrevButton);
// 次ページボタンをクリック
document.getElementById("next-button").onclick = function(){
paged_element.setNextPage();
//element.appendChild(NextButton);
//element.appendChild(PrevButton);
element.appendChild(ButtonArea);
};
// 次ページボタンをクリック
document.getElementById("prev-button").onclick = function(){
paged_element.setPrevPage();
//element.appendChild(NextButton);
//element.appendChild(PrevButton);
element.appendChild(ButtonArea);
};
});