这个特定的脚本标签是做什么用的?app://协议是什么?

4

我正在使用一个名为Photino的新开源库/框架(使用HTML5前端和.NET Core构建跨平台桌面应用程序)。Github存储库在这里

HTML作为用户界面

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

模板项目

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

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

我尝试过的方法 从我所了解的一切来看,该项目没有在任何地方使用这个。

  1. 搜索整个项目的源代码。
  2. 阅读所有 Photino 文档
  3. 广泛搜索网络

然而,我找不到任何关于以下内容的参考:

  1. app:// 协议
  2. dynamic.js
  3. 任何解释这可能是什么的东西

我假设它可以从项目中删除,但我很好奇项目模板创建者可能想要什么。你以前见过这个吗?你知道它用来做什么吗?

1个回答

3

app 用作设置 协议处理程序 到您的应用程序的关键。

从链接的文档中获取以下内容:

协议处理程序是一种应用程序,它知道如何处理特定类型的链接:例如,邮件客户端是 "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值,这可能对您的应用程序有意义。


1
非常详细的答案,非常感谢。 - raddevus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接