You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vscode-api-cn.js/interfaces/vscode.Webview.html

428 lines
24 KiB

<!doctype html>
<html class="default no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Webview | VS Code API 中文文档</title>
<meta name="description" content="VS Code API 是一系列你可以在 Visual Studio Code 扩展中调用的 JavaScript API。这个站点列出了扩展开发者可以使用的所有 vscode api 中文文档。">
<meta property="og:site_name" content="Vscode Api 中文文档">
<meta property="og:type" content="docs">
<meta property="og:url" content="https://vscode-api-cn.js.org/index.html">
<meta property="article:tag" content="vscode">
<meta property="article:tag" content="vscode api">
<meta property="article:tag" content="vscode api 中文文档">
<meta property="article:tag" content="vscode api 文档">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="https://code.visualstudio.com/favicon.ico" sizes="128x128">
<link rel="stylesheet" href="../assets/css/main.css">
<script async src="../assets/js/search.js" id="search-script"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7962287588031867" crossorigin="anonymous"></script>
<script type="text/javascript">
(function (c, l, a, r, i, t, y) {
c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments) };
t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i;
y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y);
})(window, document, "clarity", "script", "g1cbw4nxoq");
</script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-T4TRRS1LB1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-T4TRRS1LB1');
</script>
<style>
.github-corner svg {
z-index: 1;
}
.github-corner:hover .octo-arm {
animation:octocat-wave 560ms ease-in-out
}
@keyframes octocat-wave {
0%,100%{transform:rotate(0)}
20%,60%{transform:rotate(-25deg)}
40%,80%{transform:rotate(10deg)}
}
@media (max-width:500px) {
.github-corner:hover
.octo-arm{animation:none}
.github-corner .octo-arm{
animation:octocat-wave 560ms ease-in-out
}
}
.container-main {
padding-bottom: 50px;
}
</style>
</head>
<body>
<header>
<div class="tsd-page-toolbar">
<div class="container">
<div class="table-wrap">
<div class="table-cell" id="tsd-search" data-index="../assets/js/search.json" data-base="..">
<div class="field">
<label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
<input id="tsd-search-field" type="text" />
</div>
<ul class="results">
<li class="state loading">Preparing search index...</li>
<li class="state failure">The search index is not available</li>
</ul>
<a href="../index.html" class="title">VS Code API 中文文档</a>
</div>
<div class="table-cell" id="tsd-widgets">
<div id="tsd-filter">
<a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a>
<div class="tsd-filter-group">
<div class="tsd-select" id="tsd-filter-visibility">
<span class="tsd-select-label">All</span>
<ul class="tsd-select-list">
<li data-value="public">Public</li>
<li data-value="protected">Public/Protected</li>
<li data-value="private" class="selected">All</li>
</ul>
</div>
<input type="checkbox" id="tsd-filter-inherited" checked />
<label class="tsd-widget" for="tsd-filter-inherited">Inherited</label>
<input type="checkbox" id="tsd-filter-externals" checked />
<label class="tsd-widget" for="tsd-filter-externals">Externals</label>
</div>
</div>
<a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a>
</div>
</div>
</div>
</div>
<div class="tsd-page-title">
<div class="container">
<ul class="tsd-breadcrumb">
<li>
<a href="../modules.html">VS Code API 中文文档</a>
</li>
<li>
<a href="../modules/vscode.html">vscode</a>
</li>
<li>
<a href="vscode.Webview.html">Webview</a>
</li>
</ul>
<h1>Interface Webview</h1>
</div>
</div>
</header>
<div class="container container-main">
<div class="row">
<div class="col-8 col-content">
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Displays html content, similarly to an iframe.</p>
</div>
</div>
</section>
<section class="tsd-panel tsd-hierarchy">
<h3>层级</h3>
<ul class="tsd-hierarchy">
<li>
<span class="target">Webview</span>
</li>
</ul>
</section>
<section class="tsd-panel-group tsd-index-group">
<h2>索引</h2>
<section class="tsd-panel tsd-index-panel">
<div class="tsd-index-content">
<section class="tsd-index-section ">
<h3>Properties4</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="vscode.Webview.html#options" class="tsd-kind-icon">options</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="vscode.Webview.html#html" class="tsd-kind-icon">html</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="vscode.Webview.html#onDidReceiveMessage" class="tsd-kind-icon">on<wbr>Did<wbr>Receive<wbr>Message</a></li>
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="vscode.Webview.html#cspSource" class="tsd-kind-icon">csp<wbr>Source</a></li>
</ul>
</section>
<section class="tsd-index-section ">
<h3>Methods2</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-method tsd-parent-kind-interface"><a href="vscode.Webview.html#postMessage" class="tsd-kind-icon">post<wbr>Message</a></li>
<li class="tsd-kind-method tsd-parent-kind-interface"><a href="vscode.Webview.html#asWebviewUri" class="tsd-kind-icon">as<wbr>Webview<wbr>Uri</a></li>
</ul>
</section>
</div>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Properties4</h2>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="options" class="tsd-anchor"></a>
<h3>options</h3>
<div class="tsd-signature tsd-kind-icon">options<span class="tsd-signature-symbol">:</span> <a href="vscode.WebviewOptions.html" class="tsd-signature-type" data-tsd-kind="Interface">WebviewOptions</a></div>
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/3de8600/vscode.d.ts#L7454">vscode.d.ts:7454</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Content settings for the webview.</p>
</div>
</div>
</section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="html" class="tsd-anchor"></a>
<h3>html</h3>
<div class="tsd-signature tsd-kind-icon">html<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/3de8600/vscode.d.ts#L7481">vscode.d.ts:7481</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>HTML contents of the webview.</p>
</div>
<p>This should be a complete, valid html document. Changing this property causes the webview to be reloaded.</p>
<p>Webviews are sandboxed from normal extension process, so all communication with the webview must use
message passing. To send a message from the extension to the webview, use <a href="vscode.Webview.html#postMessage"><code>postMessage</code></a>.
To send message from the webview back to an extension, use the <code>acquireVsCodeApi</code> function inside the webview
to get a handle to the editor&#39;s api and then call <code>.postMessage()</code>:</p>
<pre><code class="language-html"><span style="color: #800000">&lt;script&gt;</span>
<span style="color: #000000FF"> </span><span style="color: #0000FF">const</span><span style="color: #000000FF"> </span><span style="color: #0070C1">vscode</span><span style="color: #000000FF"> </span><span style="color: #000000">=</span><span style="color: #000000FF"> </span><span style="color: #795E26">acquireVsCodeApi</span><span style="color: #000000FF">(); </span><span style="color: #008000">// acquireVsCodeApi can only be invoked once</span>
<span style="color: #000000FF"> </span><span style="color: #001080">vscode</span><span style="color: #000000FF">.</span><span style="color: #795E26">postMessage</span><span style="color: #000000FF">({ </span><span style="color: #001080">message:</span><span style="color: #000000FF"> </span><span style="color: #A31515">&#039;hello!&#039;</span><span style="color: #000000FF"> });</span>
<span style="color: #800000">&lt;/script&gt;</span>
</code></pre>
<p>To load a resources from the workspace inside a webview, use the <a href="vscode.Webview.html#asWebviewUri"><code>asWebviewUri</code></a> method
and ensure the resource&#39;s directory is listed in <a href="vscode.WebviewOptions.html#localResourceRoots"><code>WebviewOptions.localResourceRoots</code></a>.</p>
<p>Keep in mind that even though webviews are sandboxed, they still allow running scripts and loading arbitrary content,
so extensions must follow all standard web security best practices when working with webviews. This includes
properly sanitizing all untrusted input (including content from the workspace) and
setting a <a href="https://aka.ms/vscode-api-webview-csp">content security policy</a>.</p>
</div>
</section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="onDidReceiveMessage" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagReadonly">Readonly</span> on<wbr>Did<wbr>Receive<wbr>Message</h3>
<div class="tsd-signature tsd-kind-icon">on<wbr>Did<wbr>Receive<wbr>Message<span class="tsd-signature-symbol">:</span> <a href="vscode.Event.html" class="tsd-signature-type" data-tsd-kind="Interface">Event</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></div>
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/3de8600/vscode.d.ts#L7490">vscode.d.ts:7490</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Fired when the webview content posts a message.</p>
</div>
<p>Webview content can post strings or json serializable objects back to an extension. They cannot
post <code>Blob</code>, <code>File</code>, <code>ImageData</code> and other DOM specific objects since the extension that receives the
message does not run in a browser environment.</p>
</div>
</section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="cspSource" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagReadonly">Readonly</span> csp<wbr>Source</h3>
<div class="tsd-signature tsd-kind-icon">csp<wbr>Source<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/3de8600/vscode.d.ts#L7534">vscode.d.ts:7534</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Content security policy source for webview resources.</p>
</div>
<p>This is the origin that should be used in a content security policy rule:</p>
<pre><code><span style="color: #001080">img</span><span style="color: #000000">-</span><span style="color: #001080">src</span><span style="color: #000000"> https: </span><span style="color: #001080">$</span><span style="color: #000000">{</span><span style="color: #001080">webview</span><span style="color: #000000">.</span><span style="color: #001080">cspSource</span><span style="color: #000000">} ...;</span>
</code></pre>
</div>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Methods2</h2>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-interface">
<a name="postMessage" class="tsd-anchor"></a>
<h3>post<wbr>Message</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-interface">
<li class="tsd-signature tsd-kind-icon">post<wbr>Message<span class="tsd-signature-symbol">(</span>message<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/3de8600/vscode.d.ts#L7510">vscode.d.ts:7510</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Post a message to the webview content.</p>
</div>
<p>Messages are only delivered if the webview is live (either visible or in the
background with <code>retainContextWhenHidden</code>).</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>message: <span class="tsd-signature-type">any</span></h5>
<div class="tsd-comment tsd-typography">
<p>Body of the message. This must be a string or other json serializable object.</p>
<p> For older versions of vscode, if an <code>ArrayBuffer</code> is included in <code>message</code>,
it will not be serialized properly and will not be received by the webview.
Similarly any TypedArrays, such as a <code>Uint8Array</code>, will be very inefficiently
serialized and will also not be recreated as a typed array inside the webview.</p>
<p> However if your extension targets vscode 1.57+ in the <code>engines</code> field of its
<code>package.json</code>, any <code>ArrayBuffer</code> values that appear in <code>message</code> will be more
efficiently transferred to the webview and will also be correctly recreated inside
of the webview.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-interface">
<a name="asWebviewUri" class="tsd-anchor"></a>
<h3>as<wbr>Webview<wbr>Uri</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-interface">
<li class="tsd-signature tsd-kind-icon">as<wbr>Webview<wbr>Uri<span class="tsd-signature-symbol">(</span>localResource<span class="tsd-signature-symbol">: </span><a href="../classes/vscode.Uri.html" class="tsd-signature-type" data-tsd-kind="Class">Uri</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="../classes/vscode.Uri.html" class="tsd-signature-type" data-tsd-kind="Class">Uri</a></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/3de8600/vscode.d.ts#L7523">vscode.d.ts:7523</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Convert a uri for the local file system to one that can be used inside webviews.</p>
</div>
<p>Webviews cannot directly load resources from the workspace or local file system using <code>file:</code> uris. The
<code>asWebviewUri</code> function takes a local <code>file:</code> uri and converts it into a uri that can be used inside of
a webview to load the same resource:</p>
<pre><code class="language-ts"><span style="color: #001080">webview</span><span style="color: #000000">.</span><span style="color: #001080">html</span><span style="color: #000000"> = </span><span style="color: #A31515">`&lt;img src=&quot;</span><span style="color: #0000FF">${</span><span style="color: #001080">webview</span><span style="color: #000000FF">.</span><span style="color: #795E26">asWebviewUri</span><span style="color: #000000FF">(</span><span style="color: #001080">vscode</span><span style="color: #000000FF">.</span><span style="color: #001080">Uri</span><span style="color: #000000FF">.</span><span style="color: #795E26">file</span><span style="color: #000000FF">(</span><span style="color: #A31515">&#039;/Users/codey/workspace/cat.gif&#039;</span><span style="color: #000000FF">))</span><span style="color: #0000FF">}</span><span style="color: #A31515">&quot;&gt;`</span>
</code></pre>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>localResource: <a href="../classes/vscode.Uri.html" class="tsd-signature-type" data-tsd-kind="Class">Uri</a></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="../classes/vscode.Uri.html" class="tsd-signature-type" data-tsd-kind="Class">Uri</a></h4>
</li>
</ul>
</section>
</section>
</div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<nav class="tsd-navigation primary">
<ul>
<li class=" ">
<a href="../modules.html">Exports</a>
</li>
<li class="current tsd-kind-namespace">
<a href="../modules/vscode.html">vscode</a>
<ul>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.authentication.html">authentication</a>
</li>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.commands.html">commands</a>
</li>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.comments.html">comments</a>
</li>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.debug.html">debug</a>
</li>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.env.html">env</a>
</li>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.extensions.html">extensions</a>
</li>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.languages.html">languages</a>
</li>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.notebooks.html">notebooks</a>
</li>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.scm.html">scm</a>
</li>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.tasks.html">tasks</a>
</li>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.tests.html">tests</a>
</li>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.window.html">window</a>
</li>
<li class=" tsd-kind-namespace tsd-parent-kind-namespace">
<a href="../modules/vscode.workspace.html">workspace</a>
</li>
</ul>
</li>
</ul>
</nav>
<nav class="tsd-navigation secondary menu-sticky">
<div style="width: 200px">
<script type="text/javascript" id="clstr_globe" src="//clustrmaps.com/globe.js?d=cMnk-gSDNcAzNMMm67U8rWRaHnjUc0Xb0giSGndepK4"></script>
</div>
<ul class="before-current">
</ul>
<ul class="current">
<li class="current tsd-kind-interface tsd-parent-kind-namespace">
<a href="vscode.Webview.html" class="tsd-kind-icon">Webview</a>
<ul>
<li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="vscode.Webview.html#options" class="tsd-kind-icon">options</a>
</li>
<li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="vscode.Webview.html#html" class="tsd-kind-icon">html</a>
</li>
<li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="vscode.Webview.html#onDidReceiveMessage" class="tsd-kind-icon">on<wbr>Did<wbr>Receive<wbr>Message</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-interface">
<a href="vscode.Webview.html#postMessage" class="tsd-kind-icon">post<wbr>Message</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-interface">
<a href="vscode.Webview.html#asWebviewUri" class="tsd-kind-icon">as<wbr>Webview<wbr>Uri</a>
</li>
<li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="vscode.Webview.html#cspSource" class="tsd-kind-icon">csp<wbr>Source</a>
</li>
</ul>
</li>
</ul>
<ul class="after-current">
</ul>
</nav>
</div>
</div>
</div>
<footer class="with-border-bottom">
<div class="container">
<h2>图例</h2>
<div class="tsd-legend-group">
<ul class="tsd-legend">
<li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li>
<li class="tsd-kind-method tsd-parent-kind-interface"><span class="tsd-kind-icon">Method</span></li>
</ul>
</div>
</div>
</footer>
<div class="container tsd-generator">
<p><a href="https://liiked.github.io/VS-Code-Extension-Doc-ZH/" target="_blank">VS Code 插件开发中文文档</a> | <a href="https://jeasonstudio.gitbooks.io/vscode-cn-doc/content/" target="_blank">VS Code 中文文档</a> | <a href="https://code.visualstudio.com/docs" target="_blank">VS Code 官网文档</a> | <a href="https://marketplace.visualstudio.com/" target="_blank">VS Code 扩展市场</a></p>
<p>Generated by <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p>
</div>
<div class="overlay"></div>
<script src="../assets/js/main.js"></script>
<a href="https://github.com/youngjuning/vscode-api-cn" target="_blank" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: fixed; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>
</body>
</html>