Javascript 使用Pandoc的完全自包含的HTML文件

Javascript 使用Pandoc的完全自包含的HTML文件,javascript,html,embed,pandoc,self-hosting,Javascript,Html,Embed,Pandoc,Self Hosting,我对HTML和Javascript知之甚少,我想知道以下几点: 我有一个主HTML文件,其中包含一些文本,图像。。。它还包含对其他本地HTML文件的内部引用,这些文件放在相对目录中。 是否可以创建一个完全自包含的HTML文件,其中其他文件仍由URL链接引用,但其内容仅记录在主文件中 我在使用Pandoc中的--自包含的选项时遇到了这个问题,该选项只将所有必要的内容(CSS样式表,…)写入HTML头,而主HTML文档仍然需要“查看”实际的本地文件 到目前为止,我尝试了iframe标记,但它总是打开

我对HTML和Javascript知之甚少,我想知道以下几点:

我有一个主HTML文件,其中包含一些文本,图像。。。它还包含对其他本地HTML文件的内部引用,这些文件放在相对目录中。 是否可以创建一个完全自包含的HTML文件,其中其他文件仍由URL链接引用,但其内容仅记录在主文件中

我在使用Pandoc中的
--自包含的
选项时遇到了这个问题,该选项只将所有必要的内容(CSS样式表,…)写入HTML头,而主HTML文档仍然需要“查看”实际的本地文件

到目前为止,我尝试了
iframe
标记,但它总是打开的,不像一行URL链接那样简单地放在页面中。我已经用HTML+javascript阅读了这篇文章,但我不确定这是否与Pandoc兼容


有谁能帮我理解这项任务的难度吗?

通常一个HTML文件被一个URL引用,因此,当您跟随链接并更改URL时,您将导航到一个新文件。为了以某种方式打包多个文件,例如发明了EPUB文件格式(本质上是HTML文件的压缩集合,pandoc也可以生成它)

除此之外,您还可以使用哈希链接链接到同一HTML文件中的数据,如:

See <a href="#my-section">section 1</a>.

<h1 id="my-section">My section</h1>
请参阅。
我的部门

然后,您还可以编写一些JavaScript并将其嵌入HTML文件中。然后,JavaScript将隐藏除当前在浏览器哈希中的部分之外的所有部分(如
myhtmlfile.html\mysection
)。

您可以将子html转换为字符串,并使用主html中的链接将其链接:

  • 创建子HTML文件:
  • 
    子HTML
    子HTML
    这是子HTML

  • 将其文件内容转换为Base64(例如,使用):
  • PCETLSBZDWIUAHRTBCATLT4NCJXODG1SPG00KICA8DGL0BGU+DQOGICBTDWIGSFRNTA0KICA8L3RPDGXLPG0KIDWVAGVHZD4NCJXIB2R5PG0KIDXODG5TDWIGFRNTDWVADE+DQogPHA+VGHPCYB0Agugu3ViiehutupupC9WPG0KPC9IB2R5PG0ODG1SPG==

  • 创建主HTML,通过数据URI与目标文件的Base64编码链接子HTML:
  • 
    主HTML
    主HTML
    这是主要的HTML

    通过目标的(相对)路径引用目标,如果没有 第二档。
    通过其Base64编码引用目标,并且在没有 第二档。


    编辑:

    由于该问题是专门针对
    pandoc
    提出的,下面是使用降价的上述示例:

  • 创建子标记文件:
  • #子HTML
    这是子HTML。
    
  • 使用
    pandoc
    将子标记文件转换为HTML:
  • pandoc sub.md>sub.html
    
  • 将子HTML文件转换为Base64:
  • base64
    PGgxIGlkPSJzdWItaHRtbCI+U3VIIEHUTUW8L2G08CD5UAGLZIGLZIHROZSBZDWIGSFRNTC48 L3A+Cg==

  • 通过数据URI创建引用子HTML文件的主标记文件:
  • #主HTML
    这是主要的HTML。
    [此链接指向子HTML][relative_path]通过其
    (相对)路径,如果没有第二个文件,则无法使用。
    [此链接指向子HTML][data_uri]通过其Base64引用目标
    编码并将在没有第二个文件的情况下工作。
    [相对路径]:sub.html
    [数据uri]:数据:text/html;ASCII-US;base64,PGgxIGlkPSJzdWItaHRtbCI+U3ViIEhU
    TUW8L2G08CD5UAGLZIGLZIHROZSBZDWIGSFRNTC48L3A+Cg==
    
  • 使用
    pandoc
    将主标记文件转换为HTML:
  • pandoc main.md>main.html
    
    我不理解这个问题。JavaScript可以构建HTML,不管怎样,你都应该使用外部脚本
    src
    s,问题是,是否可以完全在
    master.html
    中编写
    slave.html
    ,然后使用普通超链接调用它?在JavaScript中,其他脚本标记可以访问上述脚本。我将尝试阅读更多有关JavaScript的信息,以了解它如何构建html,因为在我的例子中,它必须通过Pandoc完成。你是在问如何生成一个HTML文件,其中包含指向某个文件夹中所有文件的链接吗?如果是这样,这与潘多克无关。是的,你可以用javascript(node.js)来实现这一点,但你也可以用任何其他编程语言来实现。我需要尝试一下你给出的HTML代码片段,尽管在单击相应的链接之前,我不知道“我的部分”是如何隐藏的。我真的觉得很有趣,如果一个Pandoc过滤器在标记源代码中调用例如
    include{file_to_link.html}
    ,我仍然是这些东西的初学者。代码片段不包括隐藏东西的JS,只需滚动到标题即可。我认为有一些pandoc过滤器可以包含文件,但是你也可以像pandoc file1.md file2.md那样连接它们。pandoc手动连接将在命令行顺序中包含所有标记内容,因此所有内容都将在HTML输出中可见。我的建议中的
    include{file_to_link.html}
    将实现类似于您的答案的东西,或者这个被接受的答案应该不会太难,编写一个脚本来收集文件,将它们包装在
    div中,就像您链接到的答案中那样,然后将其传递给pandoc,它允许原始html在其标记中内联。