Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Свежее
Разработка Валерий Алексеев 3 июн 2020
Компании
Notion на максималках: как я
Вакансии
открыл для себя бесплатную CMS
Мероприятия
Не так давно я познакомился с Notion — приложением для заметок с
Подписки поддержкой встроенных баз данных и удобным интерфейсом. С тех
пор Notion — инструмент №1 в моей повседневной рутине. Я научился
привязывать страницы Notion к собственному домену, с тех пор
Разработка
использую его как примитивную CMS для некоторых своих проектов.
О проекте Вакансии
Использовать Notion с любым собственным доменом.
4. Прямые руки.
const corsHeaders = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, HEAD, POST,PUT, OPTIONS",
"Access-Control-Allow-Headers": "Content-Type",
}
function handleOptions(request) {
if (request.headers.get("Origin") !== null &&
request.headers.get("Access-Control-Request-Method") !== null &&
request.headers.get("Access-Control-Request-Headers") !== null) {
// Handle CORS pre-flight request.
return new Response(null, {
headers: corsHeaders
})
} else {
// Handle standard OPTIONS request.
return new Response(null, {
headers: {
"Allow": "GET, HEAD, POST, PUT, OPTIONS",
}
})
}
}
} else if ((url.pathname.startsWith("/api"))) {
// Forward API
response = await fetch(`https://www.notion.so${url.pathname}`, {
body: request.body, // must match 'Content-Type' header
headers: {
'content-type': 'application/json;charset=UTF-8',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTM
},
method: "POST", // *GET, POST, PUT, DELETE, etc.
})
response = new Response(response.body, response)
response.headers.set('Access-Control-Allow-Origin', "*")
} else if (url.pathname === `/`) {
// 301 redrict
let pageUrlList = START_PAGE.split("/")
let redrictUrl = `https://${MY_DOMAIN}/${pageUrlList[pageUrlList.length - 1]}`
return Response.redirect(redrictUrl, 301)
} else {
response = await fetch(`https://www.notion.so${url.pathname}`, {
body: request.body, // must match 'Content-Type' header
headers: request.headers,
method: request.method, // *GET, POST, PUT, DELETE, etc.
})
response = new Response(response.body, response)
}
return response
}
class ElementHandler {
element(element) {
// An incoming element, such as `div`
element.append(`
<script>
// if you want to hide some element, add the selector to hideEle Array
const hideEle = [
"#notion-app > div > div.notion-cursor-listener > div > div:nth-child(1) > div.notion-topbar
"#notion-app > div > div.notion-cursor-listener > div > div:nth-child(1) > div.notion-topbar
"#notion-app > div > div.notion-cursor-listener > div > div:nth-child(1) > div.notion-topbar
".notion-topbar > div:nth-child(1) > div:nth-child(5)",
]
// if you want to replace some element, add the selector and innerHTML to replaceEle Object
const replaceEle = {
"#notion-app > div > div.notion-cursor-listener > div > div:nth-child(1) > div.notion-topbar
}
function hideElement(qs) {
let eles = document.querySelectorAll(qs)
eles && eles.forEach(ele => ele.style.display = "none")
}
function replaceElement(qs, _html) {
let ele = document.querySelector(qs)
if (ele) {
ele.innerHTML = _html
}
}
let MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMu
let body = document.querySelector('body');
let observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
let pageContent = document.querySelector("#notion-app div.notion-page-content"
if (pageContent) {
// Do nothing club
}
hideEle.forEach( hideE => hideElement(hideE) )
Object.entries(replaceEle).forEach( item => {
let [qs,_html] = item;
replaceElement(qs,_html)
})
});
});
observer.observe(body, { subtree: true, childList: true });
</script>
`, { html: Boolean })
console.log(`Incoming element: ${element.tagName}`)
}
comments(comment) {
// An incoming comment
}
text(text) {
// An incoming piece of text
}
}
#notion
62 1 76
Маркетинг
Вакансии Разместить
Показать ещё
Псс...
Мы тут собрали умную камеру для наблюдения
за котиками. Хотите научим?
62 комментария
Популярные По порядку
Написать комментарий...
Denis Step 23
3.06.2020
Сергей Некрасов 11
3.06.2020
Гриша Булыжников 8
3.06.2020
Сослан Сакшин 1
4.06.2020
Tony Sedniov 1
4.06.2020
Гриша Булыжников 1
4.06.2020
руками
Ответить
233 163
67 169
Мероприятия Разместить
Показать ещё
Обсудить 2
Обсудить 0
37 101
6 1