Fix bug where iframe isn't fully destroyed, add FAQ.
This commit is contained in:
parent
e471f4a03f
commit
4a3faa9761
8 changed files with 125 additions and 57 deletions
|
|
@ -16,52 +16,52 @@ const t = useTranslations(lang);
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer-madeby">
|
<div class="footer-madeby">
|
||||||
<Link href="https://wearr.dev" newTab linkTextContent={t("footer.madeWithLove")}>
|
<Link href="https://wearr.dev" newTab linkTextContent={t("footer.madeWithLove")} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="footer-bottom">
|
||||||
<div class="footer-bottom">
|
<div class="footer-links">
|
||||||
<div class="footer-links">
|
<Link href="https://titaniumnetwork.org" newTab linkTextContent={t("footer.poweredBy")} />
|
||||||
<Link href="https://titaniumnetwork.org" newTab linkTextContent={t("footer.poweredBy")}>
|
|
||||||
|
<div class="footer-copyright">
|
||||||
|
<p>© {t("footer.aluProject")} 2024</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer-copyright">
|
<style>
|
||||||
<p>© {t("footer.aluProject")} 2024</p>
|
.wave-svg-container {
|
||||||
</div>
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
z-index: -1;
|
||||||
|
overflow: hidden;
|
||||||
|
height: 300px;
|
||||||
|
filter: brightness(1.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-around;
|
||||||
|
color: var(--text-color);
|
||||||
|
position: relative;
|
||||||
|
padding-top: 200px;
|
||||||
|
gap: 50px;
|
||||||
|
}
|
||||||
|
.footer-top,
|
||||||
|
.footer-bottom {
|
||||||
|
width: 90%;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-title {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: var(--text-color);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
|
||||||
.wave-svg-container {
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
z-index: -1;
|
|
||||||
overflow: hidden;
|
|
||||||
height: 300px;
|
|
||||||
filter: brightness(1.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: space-around;
|
|
||||||
color: var(--text-color);
|
|
||||||
position: relative;
|
|
||||||
padding-top: 150px;
|
|
||||||
gap: 50px;
|
|
||||||
}
|
|
||||||
.footer-top,
|
|
||||||
.footer-bottom {
|
|
||||||
width: 90%;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-title {
|
|
||||||
font-size: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: var(--text-color);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<script src="/uv/uv.bundle.js" transition:persist></script>
|
<script src="/uv/uv.bundle.js" transition:persist is:inline></script>
|
||||||
<script src="/uv.config.js" transition:persist></script>
|
<script src="/uv.config.js" transition:persist is:inline></script>
|
||||||
<script>
|
<script>
|
||||||
//@ts-nocheck
|
//@ts-nocheck
|
||||||
let form = document.querySelector("form");
|
let form = document.querySelector("form");
|
||||||
|
|
@ -60,6 +60,22 @@
|
||||||
topBar.style.opacity = 0;
|
topBar.style.opacity = 0;
|
||||||
iframe.style.pointerEvents = "none";
|
iframe.style.pointerEvents = "none";
|
||||||
topBar.style.pointerEvents = "none";
|
topBar.style.pointerEvents = "none";
|
||||||
|
setTimeout(() => {
|
||||||
|
iframe.remove();
|
||||||
|
topBar.remove();
|
||||||
|
|
||||||
|
// recreate them
|
||||||
|
iframe = document.createElement("iframe");
|
||||||
|
iframe.id = "proxy-frame";
|
||||||
|
iframe.style.opacity = 0;
|
||||||
|
iframe.style.pointerEvents = "none";
|
||||||
|
topBar = document.createElement("div");
|
||||||
|
topBar.id = "top-bar";
|
||||||
|
topBar.style.opacity = 0;
|
||||||
|
topBar.style.pointerEvents = "none";
|
||||||
|
document.body.appendChild(topBar);
|
||||||
|
document.body.appendChild(iframe);
|
||||||
|
}, 500);
|
||||||
});
|
});
|
||||||
let urlText = document.createElement("p");
|
let urlText = document.createElement("p");
|
||||||
urlText.classList.add("url-text");
|
urlText.classList.add("url-text");
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ const t = useTranslations(lang);
|
||||||
<div id="current-content"></div>
|
<div id="current-content"></div>
|
||||||
</div>
|
</div>
|
||||||
<script is:inline>
|
<script is:inline>
|
||||||
document.addEventListener("astro:before-swap", () => {
|
document.addEventListener("astro:after-swap", () => {
|
||||||
window.currentlySelectedTab = "";
|
window.currentlySelectedTab = "";
|
||||||
document.removeEventListener("setting-tabChange", determineListener);
|
document.removeEventListener("setting-tabChange", determineListener);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,11 @@
|
||||||
"menu.welcome": "Welcome to Alu",
|
"menu.welcome": "Welcome to Alu",
|
||||||
"menu.search": "Search...",
|
"menu.search": "Search...",
|
||||||
|
|
||||||
|
"faq.whatIsAProxy": "What is a proxy?",
|
||||||
|
"faq.whatIsAProxy.answer": "A proxy is a method of making your internet traffic anonymous by sending your request to a server (proxy), having that make the request, and then send it back to you! This allows for a much larger level of security, as well as bypassing website restrictions in public spaces and censorship.",
|
||||||
|
|
||||||
|
"faq.whyIsAluSoSlow": "Why is Alu so slow?",
|
||||||
|
"faq.whyIsAluSoSlow.answer": "This could be for a number of reasons, but it is most likely due to the proxy you are using. If you are far away from where Alu is hosted, it will take longer for the request to be sent and received. If the proxy you are using is congested with traffic, it will also be slower.",
|
||||||
"footer.brand": "Alu",
|
"footer.brand": "Alu",
|
||||||
"footer.madeWithLove": "Made with ❤️ by wearr",
|
"footer.madeWithLove": "Made with ❤️ by wearr",
|
||||||
"footer.poweredBy": "Powered by Ultraviolet",
|
"footer.poweredBy": "Powered by Ultraviolet",
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,12 @@
|
||||||
"menu.welcome": "アルーにようこそ",
|
"menu.welcome": "アルーにようこそ",
|
||||||
"menu.search": "検索...",
|
"menu.search": "検索...",
|
||||||
|
|
||||||
|
"faq.whatIsAProxy": "プロキシとは何ですか?",
|
||||||
|
"faq.whatIsAProxy.answer": "プロキシは、ウェブサイトにアクセスするための中継サーバーです。プロキシを使用すると、ウェブサイトにアクセスする際に自分のIPアドレスを隠すことができます。",
|
||||||
|
|
||||||
|
"faq.whyIsAluSoSlow": "なぜアルーは遅いのですか?",
|
||||||
|
"faq.whyIsAluSoSlow.answer": "アルーは、プロキシを使用してウェブサイトにアクセスするため、ウェブサイトの読み込みに時間がかかることがあります。また、アルーはまだ開発中のため、パフォーマンスが低いことがあります。",
|
||||||
|
|
||||||
"footer.brand": "アルー",
|
"footer.brand": "アルー",
|
||||||
"footer.madeWithLove": "wearrによる❤️で作られました",
|
"footer.madeWithLove": "wearrによる❤️で作られました",
|
||||||
"footer.poweredBy": "「ウルトラバイオレット」による駆動",
|
"footer.poweredBy": "「ウルトラバイオレット」による駆動",
|
||||||
|
|
|
||||||
|
|
@ -138,14 +138,6 @@ const { title, optionalPreloads } = Astro.props;
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.main-content {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
flex-direction: column;
|
|
||||||
width: 100%;
|
|
||||||
height: 60vh;
|
|
||||||
}
|
|
||||||
#proxy-frame {
|
#proxy-frame {
|
||||||
display: block;
|
display: block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
import Layout from "../../layouts/Layout.astro";
|
import Layout from "../../layouts/Layout.astro";
|
||||||
|
|
||||||
import { getLangFromUrl, useTranslations } from "../../i18n/utils";
|
import { getLangFromUrl, useTranslations } from "../../i18n/utils";
|
||||||
|
import Link from "../../components/Link.astro";
|
||||||
const lang = getLangFromUrl(Astro.url);
|
const lang = getLangFromUrl(Astro.url);
|
||||||
const t = useTranslations(lang);
|
const t = useTranslations(lang);
|
||||||
|
|
||||||
|
|
@ -19,12 +20,42 @@ export function getStaticPaths() {
|
||||||
<div id="top-bar"></div>
|
<div id="top-bar"></div>
|
||||||
<iframe title="proxy-iframe" id="proxy-frame"></iframe>
|
<iframe title="proxy-iframe" id="proxy-frame"></iframe>
|
||||||
</form>
|
</form>
|
||||||
|
<div class="faq-section">
|
||||||
|
<div class="faq-card">
|
||||||
|
<h2>{t("faq.whatIsAProxy")}</h2>
|
||||||
|
<p>{t("faq.whatIsAProxy.answer")}</p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-card">
|
||||||
|
<h2>{t("faq.whyIsAluSoSlow")}</h2>
|
||||||
|
<p>{t("faq.whyIsAluSoSlow.answer")}</p>
|
||||||
|
</div>
|
||||||
|
<div class="faq-card faq-large">
|
||||||
|
<h2>How can I contribute to the development of Alu?</h2>
|
||||||
|
<p>
|
||||||
|
Spreading the word of Alu is a great start, but if you really enjoy Alu, and want private
|
||||||
|
links, consider supporting me through Patreon! You can support me <Link
|
||||||
|
href="https://www.patreon.com/wearr/membership"
|
||||||
|
newTab
|
||||||
|
linkTextContent="Here!"
|
||||||
|
/>, thank you for helping to make Alu great!
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Layout>
|
</Layout>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
.main-content {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
height: 75vh;
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
form {
|
form {
|
||||||
width: 30%;
|
width: 40%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-text {
|
.title-text {
|
||||||
|
|
@ -67,4 +98,21 @@ export function getStaticPaths() {
|
||||||
transition: 250ms ease-in-out;
|
transition: 250ms ease-in-out;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
.faq-section {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 20px;
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.faq-card {
|
||||||
|
background-color: var(--dropdown-background-color);
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 20px;
|
||||||
|
color: var(--text-color);
|
||||||
|
}
|
||||||
|
.faq-large {
|
||||||
|
grid-column: span 2;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"extends": "astro/tsconfigs/strict",
|
"extends": "astro/tsconfigs/strict",
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"verbatimModuleSyntax": false
|
"verbatimModuleSyntax": false,
|
||||||
|
"allowSyntheticDefaultImports": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue