-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Docker 无法正确处理 siyuan://
链接
#12297
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
操作系统默认行为就是启动注册对应协议的应用程序,所以无法处理。 |
那在 Docker 环境下就不用这个协议,DOM 里替换掉 |
这个只能用户自己决定链接格式
…---原始邮件---
发件人: "Jeffrey ***@***.***>
发送时间: 2024年9月8日(周日) 晚上8:39
收件人: ***@***.***>;
抄送: ***@***.***>;"State ***@***.***>;
主题: Re: [siyuan-note/siyuan] Docker 无法正确处理 `siyuan://` 链接 (Issue #12297)
那就不用这个协议,点击链接的时候通过 URL 跳转
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you modified the open/close state.Message ID: ***@***.***>
|
有的时候在外面不方便,只能邮件回复,见谅。 |
@88250 GPT 说可以在前端处理:
|
那就没法拉起应用了
…---原始邮件---
发件人: "Jeffrey ***@***.***>
发送时间: 2024年9月28日(周六) 晚上7:48
收件人: ***@***.***>;
抄送: ***@***.******@***.***>;
主题: Re: [siyuan-note/siyuan] Docker 无法正确处理 `siyuan://` 链接 (Issue #12297)
@88250 GPT 说可以在前端处理:
在面对 siyuan://xxx 链接的处理时,特别是在前后端分离的应用部署到 Docker 后,你可以使用 JavaScript 来拦截这些链接并将用户重定向到相应的 Docker 应用 URL。你可以通过在网页中添加一个事件监听器来捕获对特定链接的点击事件。
实现方式:
添加事件监听器:
你可以在页面加载完成后,使用 JavaScript 添加一个全局的点击事件监听器,来处理所有的链接点击。
检查链接并进行重定向:
在事件处理器中,检查每个点击的链接。如果链接的格式符合 siyuan://,就进行相应的重定向。
示例代码:
document.addEventListener('click', function(event) { const target = event.target; // 检查目标是否是一个链接且其链接包含 'siyuan://' if (target.tagName === 'A' && target.href.startsWith('siyuan://')) { event.preventDefault(); // 阻止默认行为 // 构建 Docker 应用的 URL const dockerAppUrl = `http://your-docker-app-url${target.href.replace('siyuan://', '/')}`; // 重定向到 Docker 应用 window.location.href = dockerAppUrl; } });
优点:
用户体验:用户不会感到混乱,因为点击链接后会直接引导他们到正确的 Docker 应用,而不是触发本地的应用。
灵活性:可以根据需要设置不同的重定向逻辑,比如根据不同的 siyuan://,重定向到不同的 Docker 应用路径。
易于实现:使用 JavaScript 监听和判断事件相对简单,不需更改后端或重构大部分代码。
缺点:
依赖 JavaScript:如果用户的浏览器禁用了 JavaScript,那么这种方法将无效,用户将无法正常访问链接。
性能开销:全局事件监听可能会增加一些性能开销,尤其是在点击事件频繁的页面上。
SEO 影响:如果网页的链接结构依赖 JavaScript 执行才能工作,可能会影响搜索引擎的索引和排名。
安全性问题:如果没有适当的检查和验证,可能会被恶意链接利用,导致重定向到不安全的地址。
结论:
通过 JavaScript 拦截 siyuan:// 链接并重定向到 Docker 应用是可行的。需权衡其优劣,确保在实现的同时,保持良好的用户体验和安全性。
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
都用 Docker 了还要拉起什么应用? |
网页端不代表没有拉起应用的场景
…---原始邮件---
发件人: "Jeffrey ***@***.***>
发送时间: 2024年9月28日(周六) 晚上8:09
收件人: ***@***.***>;
抄送: ***@***.******@***.***>;
主题: Re: [siyuan-note/siyuan] Docker 无法正确处理 `siyuan://` 链接 (Issue #12297)
都用 Docker 了还要拉起什么应用?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
但我觉得通过 siyuan:// 跳转到对应的块更重要吧?需要在网页拉起应用应该是低频场景,手动打开应用也不差多少 |
这不好说,暂时不动了
…---原始邮件---
发件人: "Jeffrey ***@***.***>
发送时间: 2024年9月28日(周六) 晚上9:16
收件人: ***@***.***>;
抄送: ***@***.******@***.***>;
主题: Re: [siyuan-note/siyuan] Docker 无法正确处理 `siyuan://` 链接 (Issue #12297)
但我觉得通过 siyuan:// 跳转到对应的块更重要吧?需要在网页拉起应用应该是低频场景,手动打开应用也不差多少
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Uh oh!
There was an error while loading. Please reload this page.
话说伺服都行,Docker 怎么不行
如果做不到像伺服那样直接跳转,可以试试用 #7086
The text was updated successfully, but these errors were encountered: