2023-03-30 07:56:24 +00:00
|
|
|
|
<!DOCTYPE html>
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
2023-03-30 10:21:22 +00:00
|
|
|
|
<title>文章分享 - StackEdit中文版</title>
|
2023-03-30 07:56:24 +00:00
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
|
<link rel="canonical" href="https://stackedit.cn/">
|
|
|
|
|
<link rel="icon" href="static/landing/favicon.ico" type="image/x-icon">
|
|
|
|
|
<link rel="shortcut icon" href="static/landing/favicon.ico" type="image/x-icon">
|
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
|
<meta name="keywords" content="Markdown编辑器,StackEdit中文版,StackEdit汉化版,StackEdit,在线Markdown,笔记利器,Markdown笔记">
|
|
|
|
|
<meta name="description"
|
|
|
|
|
content="支持直接将码云(Gitee)、GitHub、Gitea等仓库作为笔记存储仓库且支持拖拽/粘贴上传图片,并且可以直接在页面编辑同步和管理的Markdown编辑器。">
|
|
|
|
|
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">
|
|
|
|
|
<meta name="baidu-site-verification" content="code-tGpn2BT069" />
|
|
|
|
|
<meta name="msvalidate.01" content="90A9558158543277BD284CFA054E7F5B" />
|
|
|
|
|
<link rel="stylesheet" href="style.css">
|
|
|
|
|
<style>
|
|
|
|
|
.share-header {
|
|
|
|
|
position: fixed;
|
|
|
|
|
top: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
width: 100%;
|
|
|
|
|
background-color: #383c4a;
|
|
|
|
|
color: #fff;
|
|
|
|
|
padding: 10px;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
z-index: 99999;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.share-header .logo {
|
|
|
|
|
margin: 0 0 -8px 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.share-header nav {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: row;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.share-header nav ul {
|
|
|
|
|
list-style-type: none;
|
|
|
|
|
margin: 0;
|
|
|
|
|
padding: 0;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: row;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.share-header nav li {
|
|
|
|
|
margin: 0 10px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.share-header nav a {
|
|
|
|
|
color: #fff;
|
|
|
|
|
text-decoration: none;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.share-header nav a:hover {
|
|
|
|
|
text-decoration: underline;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.share-content {
|
2023-04-10 11:57:11 +00:00
|
|
|
|
transform: translateY(50px);
|
|
|
|
|
height: 100vh;
|
2023-03-30 07:56:24 +00:00
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
<script type="text/javascript">
|
|
|
|
|
function getQueryString(name) {
|
|
|
|
|
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
|
|
|
|
|
var r = window.location.search.substr(1).match(reg);
|
|
|
|
|
if (r != null) {
|
|
|
|
|
return unescape(r[2]);
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function appendTagHtml(newdoc, tagName, targetParentEle) {
|
|
|
|
|
const tags = newdoc.getElementsByTagName(tagName);
|
|
|
|
|
if (!tags) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
for (let i = 0; i < tags.length; i++) {
|
|
|
|
|
targetParentEle.append(tags[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
window.onload = function() {
|
|
|
|
|
const xhr = new XMLHttpRequest();
|
|
|
|
|
const gistId = getQueryString('id');
|
|
|
|
|
let accessToken = null;
|
2023-04-09 13:35:55 +00:00
|
|
|
|
const tokens = window.localStorage.getItem('data/tokens');
|
|
|
|
|
if (tokens) {
|
|
|
|
|
const tokensObj = JSON.parse(tokens);
|
|
|
|
|
if (tokensObj.data && tokensObj.data.gitee) {
|
|
|
|
|
const tokenArr = Object.keys(tokensObj.data.gitee).map(it => tokensObj.data.gitee[it]).filter(it => it && it.isLogin);
|
|
|
|
|
if (tokenArr.length > 0) {
|
|
|
|
|
accessToken = tokenArr[0].accessToken;
|
2023-03-30 07:56:24 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-09-19 01:29:28 +00:00
|
|
|
|
const url = `https://gitee.com/api/v5/gists/${gistId}`;
|
|
|
|
|
let urlWithToken = url;
|
|
|
|
|
let withToken = false;
|
2023-03-30 07:56:24 +00:00
|
|
|
|
if (accessToken) {
|
2023-09-19 01:29:28 +00:00
|
|
|
|
urlWithToken = `${url}?access_token=${accessToken}`;
|
|
|
|
|
withToken = true;
|
2023-03-30 07:56:24 +00:00
|
|
|
|
}
|
2023-09-19 01:29:28 +00:00
|
|
|
|
xhr.open('GET', urlWithToken);
|
2023-03-30 07:56:24 +00:00
|
|
|
|
xhr.onload = function() {
|
|
|
|
|
if (xhr.status === 200) {
|
|
|
|
|
const newdoc = document.implementation.createHTMLDocument("");
|
|
|
|
|
const body = JSON.parse(xhr.responseText);
|
|
|
|
|
for (let key in body.files) {
|
|
|
|
|
newdoc.documentElement.innerHTML = body.files[key].content;
|
|
|
|
|
}
|
|
|
|
|
const currHead = document.head;
|
|
|
|
|
// 头部
|
|
|
|
|
appendTagHtml(newdoc, 'style', currHead);
|
|
|
|
|
// title
|
|
|
|
|
document.title = newdoc.title + ' - StackEdit中文版';
|
|
|
|
|
// 内容
|
|
|
|
|
const shareContent = document.getElementsByClassName('share-content')[0];
|
|
|
|
|
shareContent.innerHTML = newdoc.body.innerHTML;
|
2023-04-06 06:00:15 +00:00
|
|
|
|
document.body.className = newdoc.body.className;
|
2023-03-30 07:56:24 +00:00
|
|
|
|
} else if (xhr.status === 403) {
|
|
|
|
|
const rateLimit = xhr.responseText && xhr.responseText.indexOf('Rate Limit') >= 0;
|
|
|
|
|
const appUri = `${window.location.protocol}//${window.location.host}/app`;
|
2023-03-30 10:21:22 +00:00
|
|
|
|
document.getElementById('div_info').innerHTML = `${rateLimit ? "请求太过频繁" : "无权限访问"},请登录 <a href="${appUri}" target="_brank">主文档空间</a> 后再刷新此页面!`;
|
2023-09-19 01:29:28 +00:00
|
|
|
|
} else if (xhr.status === 401) {
|
|
|
|
|
if (withToken) {
|
|
|
|
|
withToken = false;
|
|
|
|
|
xhr.open('GET', url);
|
|
|
|
|
} else {
|
|
|
|
|
console.error('An error occurred: ' + xhr.status);
|
|
|
|
|
document.getElementById('div_info').innerHTML = `分享内容获取失败或已失效!请登录 <a href="${appUri}" target="_brank">主文档空间</a> 后再刷新此页面!`;
|
|
|
|
|
}
|
2023-03-30 07:56:24 +00:00
|
|
|
|
} else {
|
|
|
|
|
console.error('An error occurred: ' + xhr.status);
|
2023-09-19 01:29:28 +00:00
|
|
|
|
document.getElementById('div_info').innerHTML = `分享内容获取失败或已失效!请登录 <a href="${appUri}" target="_brank">主文档空间</a> 后再刷新此页面!`;
|
2023-03-30 07:56:24 +00:00
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
xhr.send();
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<div class="share-header">
|
|
|
|
|
<nav>
|
2023-03-30 10:21:22 +00:00
|
|
|
|
<a class="logo" href="https://stackedit.cn" target="_blank">
|
2023-03-30 07:56:24 +00:00
|
|
|
|
<img src="static/landing/logo.svg" height="30px"/>
|
|
|
|
|
</a>
|
|
|
|
|
<ul>
|
2023-03-30 10:21:22 +00:00
|
|
|
|
<li><a href="https://stackedit.cn" target="_blank">首页</a></li>
|
|
|
|
|
<li><a href="https://stackedit.cn/app" target="_blank">写笔记</a></li>
|
2023-03-30 07:56:24 +00:00
|
|
|
|
</ul>
|
|
|
|
|
</nav>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="share-content stackedit">
|
2023-03-30 10:21:22 +00:00
|
|
|
|
<div id="div_info" style="text-align: center; height: 600px;">文章加载中......</div>
|
2023-03-30 07:56:24 +00:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
|
|
|
|
|
|
|
|
|
|
<!-- built files will be auto injected -->
|
|
|
|
|
<script>
|
|
|
|
|
var _hmt = _hmt || [];
|
|
|
|
|
(function() {
|
|
|
|
|
var hm = document.createElement("script");
|
|
|
|
|
hm.src = "https://hm.baidu.com/hm.js?20a1e7a201b42702c49074c87a1f1035";
|
|
|
|
|
var s = document.getElementsByTagName("script")[0];
|
|
|
|
|
s.parentNode.insertBefore(hm, s);
|
|
|
|
|
})();
|
|
|
|
|
</script>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|