html 这个特定的script标签做什么?app://协议是什么?

b09cbbtk  于 2023-03-16  发布在  其他
关注(0)|答案(1)|浏览(129)

我正在使用一个新的开源库/框架Photino(使用HTML5前端和.NET核心构建的跨平台桌面应用程序)。

HTML作为用户界面

当Photino应用程序启动时,它会加载一个HTML页面,该页面将成为桌面应用程序的用户界面。

模板项目

Photino项目提供模板项目,基本项目(使用命令$ dotnet new photinoapp -o <projname>构建)包含一个index.html页面,该页面包含以下脚本标记:

<script src="app://dynamic.js"></script>

我所尝试的从我所知道的一切来看,该项目在任何地方都没有使用它。

1.搜索整个项目的源代码。
1.读取所有Photino documentation
1.广泛搜索网络
但是,我找不到任何参考资料:
1.应用程序://协议

  1. dynamic.js
    1.任何能解释这是什么的东西
    我假设它可以从项目中删除,但我很好奇项目模板创建者的意图。你以前见过这个吗?你知道它是用来做什么的吗?
vd8tlhqk

vd8tlhqk1#

app被用作为应用程序设置protocol handler的密钥。
从该链接文档:
协议处理程序是知道如何处理特定类型的链路的应用程序:例如邮件客户端是用于“mailto:“链接的协议处理程序。
Photino.NET示例program.cs具有以下声明。

var window = new PhotinoWindow()
    .SetTitle(windowTitle)
    // More statements here left out for brevity
    .RegisterCustomSchemeHandler(
        "app", (object sender, string scheme, string url, out string contentType) =>
    {
        contentType = "text/javascript";
        return new MemoryStream(Encoding.UTF8.GetBytes(@"
            (() =>{
                window.setTimeout(() => {
                    alert(`🎉 Dynamically inserted JavaScript.`);
                }, 1000);
            })();
        "));
    })

正是RegisterCustomSchemeHandler使用该app键注册协议处理程序。
它设置了一个回调函数,当在正在加载的页面中找到给定的app键时,将调用该函数。
RegisterCustomSchemeHandler的源代码提到:
注册用户定义的自定义方案(“http”、“https”和“file”除外)和处理程序方法,以便在本机浏览器控件遇到回调时接收它们。
该样本中的index.html具有以下script标记。

<script src="app://dynamic.js"></script>

这将触发回调,回调将返回您希望为给定的script标记执行的客户端脚本。
对于上面的示例,(object sender, string scheme, string url, out string contentType)中的url参数将包含app://dynamic.js
所提供的示例忽略传入的值,只返回一个常量/硬编码脚本,但您可能会决定返回与给定url匹配的文件内容。
script标记中app://之后的部分可以是您选择的对应用程序有意义的任何string值。

相关问题