-
Notifications
You must be signed in to change notification settings - Fork 11
/
index.html
100 lines (91 loc) · 4.2 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>reveal.js</title>
<link rel="icon" href="favicon.ico">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/css/reveal.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/css/theme/black.min.css">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/lib/css/zenburn.min.css">
<script>
// リクエストパラメータを取得
function getRequestParameters() {
return location.search.substring(1).split("&").reduce((acc, cur) => {
const element = cur.split("=");
acc[decodeURIComponent(element[0])] = decodeURIComponent(element[1]);
return acc;
}, {});
};
window.addEventListener("load", () => {
if (document.location.search.length < 1) {
alert("URLの末尾にマークダウンファイルのPATHを指定してください。例 : 「?slide=20170827/example.md」")
return
}
const parameters = getRequestParameters();
const markdownUrl = parameters["slide"];
if (!markdownUrl) {
alert("URLの末尾にマークダウンファイルのPATHを指定してください。例 : 「?slide=20170827/example.md」")
return
}
// Slide指定
document.getElementById("slide").dataset.markdown = markdownUrl;
Reveal.initialize({
dependencies: [
{ src: "//cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/plugin/markdown/marked.js" },
{ src: "//cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/plugin/markdown/markdown.min.js" },
{ src: "//cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/plugin/notes/notes.min.js", async: true },
{ src: "//cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/plugin/highlight/highlight.min.js", async: true, callback: function() { hljs.initHighlighting(); } }
]
}, false);
Reveal.addEventListener("ready", (event) => {
// タイトル設定
document.title = document.getElementsByTagName("h1")[0].innerText;
// fix img.src to relative path from index.html
const url = location.href.replace(/\?.*$/,"");
const mainPath = url.substring(0,url.lastIndexOf("/"));
const markDownDirPath = markdownUrl.substring(0, markdownUrl.lastIndexOf("/"));
Array.from(document.getElementsByTagName("img"), el => {
const imagePath = el.getAttribute("src");
const relativePath = imagePath.split(mainPath)[1];
if (!relativePath && imagePath.match(/^(https?:)?\/\//)) {
// another domain and absolute path case
return;
}
const result = relativePath ? markDownDirPath + relativePath : markDownDirPath + "/" + imagePath;
el.setAttribute("src",result);
});
});
});
</script>
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( "link" );
link.rel = "stylesheet";
link.type = "text/css";
link.href = window.location.search.match( /print-pdf/gi ) ? "//cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/css/print/pdf.min.css" : "//cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/css/print/paper.css";
document.getElementsByTagName( "head" )[0].appendChild(link);
</script>
<style type="text/css">
/* タイトルの大文字変換を無効 */
.reveal h1,
.reveal h2,
.reveal h3,
.reveal h4,
.reveal h5,
.reveal h6 {
text-transform: none;
}
</style>
</head>
<body>
<div class="reveal">
<div class="slides" id="slides">
<section data-separator="^\r?\n---\r?\n$" data-separator-vertical="^\r?\n--\r?\n$" id="slide" />
</div>
</div>
<script src="//cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/lib/js/head.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0/js/reveal.min.js"></script>
</body>
</html>