兼容IE8 代码<meta http-equiv="X-UA-Compatible" content="IE=Emu

本文详细介绍了Windows Internet Explorer 8的兼容性模式,包括IE5、IE7、EmulateIE7、IE8和Edge模式。提供了如何通过元标签或HTTP响应头指定兼容性模式的方法,并解释了如何使用JavaScript和条件注释来检测兼容性模式。

兼容IE8 代码<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

 

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
其实就是把IE8当做IE7用

 

今天修改了关于前端测试的工具的文章《模拟多浏览器兼容测试工具-IETester》可以到http://tommyhu.cn/analog-multi-browser-compatibility-testing-tool-ietester_9305/访问!文中推荐的是经典的IETester(提供IE5,IE6,IE7,IE8环境测试),IEcollection,Expression Web SuperPreview 测试版


<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />


未来兼容性中的 META 标记和锁定注意:本文档是预备文档,随时可能变更。

对于 Web 开发人员来说,文本兼容性是一个要考虑的重要问题。Windows Internet Explorer 8 引入了文本兼容性模式,该模式允许 Web 开发人员将浏览器设置为以与旧版本相同的方式显示网页,从而允许开发人员选择更新时间。

本文档将介绍由 Windows Internet Explorer 8 支持的文本兼容性模式,以及如何使用自定义标头基于每个页面或每个站点实现这些模式。实现适当的兼容性模式后,可以确保站点与 Windows Internet Explorer 8 及更高版本兼容。

各种兼容性模式
Windows Internet Explorer 8 支持多种兼容性模式,它们可启用不同的受支持的功能,并影响内容的呈现方式。例如,

IE5 模式呈现内容时,像是使用了 Windows Internet Explorer 7 的 Quirks 模式,这与 Windows Internet Explorer 5 显示内容的方式很相似。

IE7 模式呈现内容时,无论页面是否包含 指令,都像是使用了 Windows Internet Explorer 7 的标准模式。

EmulateIE7 模式通知 Windows Internet Explorer 使用 指令确定如何呈现内容。标准模式指令以 Windows Internet Explorer 7 标准模式显示,而 Quirks 模式指令以 IE5 模式显示。与 IE7 模式不同,EmulateIE7 模式遵循 指令。对于多数网站来说,它是首选的兼容性模式。

IE8 模式最大限度地支持行业标准(包括 W3C Cascading Style Sheets Level 2.1 Specification 和 W3C Selectors API,并能有限支持 W3C Cascading Style Sheets Level 3 Specification(工作草案)。

Edge 模式通知 Windows Internet Explorer 以最高级别的可用模式显示内容,这实际上破坏了“锁定”模式。对于 Windows Internet Explorer 8,这与 IE8 模式是等效的。如果(假定)Windows Internet Explorer 的未来版本支持更高级别的兼容模式,设置为 Edge 模式的页面将显示在由该版本支持的最高级别模式中;但是,当使用 Windows Internet Explorer 8 查看时,这些相同的页面仍将显示在 IE8 模式中。由于在 Windows Internet Explorer 的未来版本中呈现页面内容可能出现意外,建议 Web 开发人员将 Edge 模式仅用于测试页面和其他非生产活动。

基于每个页面指定兼容性模式
要为网页指定文本模式,请使用 META 元素,以在该网页中包含 X-UA-Compatible http-equiv 标头。以下示例指定了 EmulateIE7 模式兼容性。


HTML:<html>
     <head>
     <!-- Mimic Internet Explorer 7 -->
        <title>我的网页</title>
        <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
     </head>
     <body>
        <p>内容在此处。</p>
     </body>
</html>


Content 属性指定了该页面的模式;例如,要模仿 Windows Internet Explorer 7 的行为,请指定 IE=EmulateIE7。同样,可指定 IE=5、IE=7 或 IE=8 以选择其中一种兼容性模式。您还可以指定 IE=edge 以通知 Windows Internet Explorer 8 使用最高级别的可用模式。

X-UA-compatible 标头不区分大小写;但是,它必须显示在网页中除 TITLE 和其他 META 元素以外的所有元素之前的标头(HEAD 部分)中。

基于每个站点指定兼容模式
通过使用 Web 服务器为站点定义自定义 HTTP 响应标头,可为网站指定文本模式。HTTP 响应标头是 Web 服务器附加到为响应 HTTP 请求而发送到浏览器中的文件的信息,这些信息通常包含发送回文件的日期、大小和类型。

下列文档介绍了将 Web 服务器配置为将自定义 HTTP 响应标头附加到所有网页中所需的步骤。这将导致 Windows Internet Explorer 8 使用指定的文本兼容性模式,例如 EmulateIE7。

在 IIS 上实现 META 切换
在 Apache 上实现 META 切换
如果使用 Web 服务器指定了默认文本兼容性模式,则可通过在特定的网页中指定其他文本兼容性模式来覆盖该设置。在该网页中指定的模式优先于由服务器指定的模式。

使用脚本确定文本兼容性模式
要使用 Windows Internet Explorer 8 确定网页的文本兼容性模式,请使用 document 对象的 documentMode 属性。例如,将以下内容键入到 Windows Internet Explorer 8 的地址栏中,可显示当前网页的文本模式。


javascript:alert(document.documentMode);


documentMode 属性可返回与页面的文本兼容性模式相对应的数值。例如,如果所选页面支持 IE8 模式,则 documentMode 会返回 8。

注意:在 Windows Internet Explorer 6 中引入的 compatMode 属性已不受支持,取而代之的是在 Windows Internet Explorer 8 中引入的 documentMode 属性。当前使用 compatMode 的应用程序仍然可以在 Windows Internet Explorer 8 中运行;但是,它们已更新为使用 documentMode。

如果希望使用 JavaScript 确定文本的兼容性模式,请在其中包含支持 Windows Internet Explorer 旧版本的代码,如以下示例所示。

 

JScript:engine = null;
if (window.navigator.appName == "Microsoft Internet Explorer")
{
     // 这是一个 IE 浏览器。引擎处于哪种模式下?
     if (document.documentMode) // IE8
        engine = document.documentMode;
     else // IE 5-7
     {
        engine = 5; // 假设为 quirks 模式;除非另外证实是其他模式
        if (document.compatMode)
        {
           if (document.compatMode == "CSS1Compat")
              engine = 7; // 标准模式
        }
     }
     // 引擎变量现在包含文本兼容性模式。
}

 

此处使用的文档对象表示给定浏览器窗口中的 HTML 文档,可用来检查、修改 HTML 文档或将内容添加到该文档以及处理该文档中的事件。

使用条件注释确定文本兼容性模式
如果只需要适应 Windows Internet Explorer,以下代码示例说明了如何使用条件注释来适用于当前版本或旧版本。


HTML:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
<html>
     <head>
        <title>测试页</title>
        <meta http-equiv="X-UA-Compatible" content="IE=8"/>
        <!--[if gte IE 8]>
        <style type="text/css">
        body {
         color:#0000ff;
         background-color:#000000;
        }
        </style>
        <![endif]-->
        <!--[if lt IE 8]>
        <style type="text/css">
        body {
         color:#000000;
         background-color:#ffffff;
        }
        </style>
        <![endif]-->
     </head>
     <body>
        <h1>
        <!--[if gte IE 8]>
        第 1 章。
        <![endif]-->
        第一章
        </h1>
        <h1>
        <!--[if gte IE 8]>
        第 2 章。
        <![endif]-->
        第二章
        </h1>
        将看到任何版本的文本。
     </body>
</html>

&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?> &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;> &lt;HTML>&lt;HEAD>&lt;meta content=&quot;IE=5.0000&quot; = http-equiv=&quot;X-UA-Compatible&quot;/> &lt;TITLE>Trioptics Certificate&lt;/TITLE> &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; = charset=windows-1252&quot;/>&lt;link href=&quot;file:///C:/Program%20Files/Trioptics%20GmbH/MTF-LAB%205/Certifica= tes/certificate.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;/> &lt;meta name=&quot;GENERATOR&quot; content=&quot;MSHTML 11.00.9600.18538&quot;/>&lt;/HEAD> &lt;BODY class=&quot;CBodyCert&quot; id=&quot;IBodyCert&quot;>&lt;!-- open certificate table = --> &lt;TABLE align=&quot;left&quot; class=&quot;CTableCert&quot; id=&quot;ITableCert&quot;>&lt;!-- Header = --> &lt;TBODY> &lt;TR class=&quot;CTRHeader&quot; id=&quot;ITRCompany&quot;> &lt;TD class=&quot;CTDHeader&quot; id=&quot;ITDCompany&quot;> &lt;DIV class=&quot;CDivHeader&quot; id=&quot;IDivCompany&quot;>ImageMaster - Certificate&lt;/DIV>&lt;/TD> &lt;TD class=&quot;CTDHeader&quot; id=&quot;ITDLogo&quot;>&lt;img class=&quot;CTDHeader&quot; = id=&quot;ITDLogo&quot; = src=&quot;file:///C:/Program%20Files/Trioptics%20GmbH/MTF-LAB%205/Certificat= es/img/Trioptics-Logo-250x65.png&quot;/> &lt;/TD>&lt;/TR> &lt;TR class=&quot;CTRHeader&quot; id=&quot;ITDSlogan&quot;> &lt;TD class=&quot;CTDHeader&quot; id=&quot;ITDSlogan&quot; colspan=&quot;2&quot;>&lt;/TD>&lt;/TR> &lt;TR> &lt;TD colspan=&quot;2&quot;> &lt;PRE>Company : Sunex = Operator : TH = Time/Date : 20:29:14 June 14, 2025 = Sample ID : 0 = Measure Program : 3D Tilt Corrected Through Focus = Temperature : 20°C = Measured with : &lt;A href=&quot;http://www.trioptics.com/&quot;>TRIOPTICS&lt;/A> - = MTF-LAB - Vers. 5.13.2 = Instrument S/N : 09-113-0259 = Comments : AMT5 = &lt;/PRE>&lt;/TD>&lt;/TR> &lt;TR>// 修复HTML文档使其符合XML规范: QString TriopticsParser::preprocessHtmlForXml(const QString & html) { QString result = html; // 1. 修复字符集声明 result.replace(&quot;charset=\n=iso-8859-1&quot;, &quot;charset=\&quot;iso-8859-1\&quot;&quot;); // 2. 转义URL中的&符号 result.replace(QRegularExpression(&quot;href=\&quot;([^\&quot;]*?)(?&lt;!&|&lt;|>|&apos;|&quot;)&([^\&quot;]*?)\&quot;&quot;), &quot;href=\&quot;\\1&\\2\&quot;&quot;); // 3. 修复自闭合标签 QStringList selfClosingTags = { &quot;img&quot;, &quot;br&quot;, &quot;hr&quot;, &quot;meta&quot;, &quot;link&quot; }; for (const QString& tag : selfClosingTags) { // 处理有属性的标签 result.replace(QRegularExpression(QString(&quot;&lt;%1\\b([^>]*)>&quot;).arg(tag), QRegularExpression::CaseInsensitiveOption), QString(&quot;&lt;%1\\1/>&quot;).arg(tag)); // 处理没有属性的标签 result.replace(QRegularExpression(QString(&quot;&lt;%1\\s*>&quot;).arg(tag), QRegularExpression::CaseInsensitiveOption), QString(&quot;&lt;%1/>&quot;).arg(tag)); } // 4. 移除无效的&lt;/link>结束标签 result.replace(&quot;&lt;/link>&quot;, &quot;&quot;); // 5. 添加XML声明 if (!result.contains(&quot;&lt;?xml&quot;)) { result.prepend(&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;ISO-8859-1\&quot;?>\n&quot;); } return result; }
07-06
D:\environment\anaconda3\envs\oracle\python.exe E:\Project\AIProject_2025\Agent\workorderAgent\compare_document.py html_content--> &lt;!-- 继承自模板:app_doc/docs_base.html --> &lt;!DOCTYPE html> &lt;html lang=&quot;zh-cn&quot; style=&quot;font-size: 15px;&quot;> &lt;head> &lt;meta charset=&quot;UTF-8&quot;> &lt;meta name=renderer content=webkit> &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=Edge,chrome=1&quot;> &lt;meta http-equiv=&quot;Cache-Control&quot; content=&quot;no-transform&quot; /> &lt;meta http-equiv=&quot;Cache-Control&quot; content=&quot;no-siteapp&quot; /> &lt;meta http-equiv=&quot;Cache-Control&quot; content=&quot;max-age=7200&quot; /> &lt;!-- &lt;meta name=&quot;referrer&quot; content=&quot;no-referrer&quot;> --> &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1, maximum-scale=1&quot;> &lt;meta name=&quot;keywords&quot; content=&quot;LNB换型事件标准内容,IMES FA 相关文档,技术,架构,流程,知识,规范,标准化&quot;/> &lt;meta name=&quot;description&quot; content=&quot;``` &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> &lt;root> &lt;Header> &lt;SystemName>UpperSystem&lt;/SystemName&quot; /> &lt;!-- OGP分享协议开始 --> &lt;meta property=&quot;og:type&quot; content=&quot;website&quot;> &lt;meta property=&quot;og:title&quot; content=&quot;LNB换型事件标准内容 - IMES FA 相关文档&quot;> &lt;meta property=&quot;og:description&quot; content=&quot;``` &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> &lt;root> &lt;Header> &lt;SystemName>UpperSystem&lt;/SystemName&quot;> &lt;meta property=&quot;og:url&quot; content=&quot;http://kk.luxsan-ict.com/doc/13859/&quot;> &lt;link rel=&quot;icon&quot; href=&quot;/static/search/mrdoc_logo_300.png&quot; sizes=&quot;192x192&quot; /> &lt;meta property=&quot;og:image&quot; content=&quot;http://kk.luxsan-ict.com/static/search/mrdoc_logo_300.png&quot;> &lt;!-- OGP分享协议结束 --> &lt;title>LNB换型事件标准内容 - IMES FA 相关文档 - 立臻IT知识库 &lt;/title> &lt;link href=&quot;/static/PearAdminLayui/component/layui/css/layui.css?version=1.5.2&quot; rel=&quot;stylesheet&quot;> &lt;link rel=&quot;stylesheet&quot; href=&quot;/static/mr-marked/marked.css?version=1.5.2&quot; /> &lt;link href=&quot;/static/viewerjs/viewer.min.css?version=1.5.2&quot; rel=&quot;stylesheet&quot;> &lt;link href=&quot;/static/mrdoc/mrdoc.css?version=1.5.2&quot; rel=&quot;stylesheet&quot;> &lt;link href=&quot;/static/mrdoc/mrdoc-docs.css?version=1.5.2&quot; rel=&quot;stylesheet&quot;> &lt;link href=&quot;/static/iconFont/iconfont.css?version=1.5.2&quot; rel=&quot;stylesheet&quot;> &lt;style> .markdown-code .markdown-code-block pre,.vditor-reset > pre > code.hljs{ max-height: max-content!important; } code[class*=language-], pre[class*=language-]{ white-space: pre-wrap !important; } :not(pre)>code[class*=language-]{ white-space: inherit !important; } /* html{ filter: invert(1) hue-rotate(180deg); } */ &lt;/style> &lt;!--[if lt IE 9]> &lt;script src=&quot;https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js&quot;>&lt;/script> &lt;script src=&quot;https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js&quot;>&lt;/script> &lt;![endif]--> &lt;/head> &lt;body class=&quot;big-page&quot;> &lt;div id=&quot;doc-container&quot;> &lt;!-- 左侧目录栏 --> &lt;div id=&quot;doc-container-sidebar&quot; id=&quot;doc-summary&quot;> &lt;div> &lt;!-- 左上角广告块 --> &lt;!-- 广告代码开始 --> &lt;!-- 广告代码结束 --> &lt;!-- 文集名称 --> &lt;div class=&quot;project-title&quot;> &lt;svg class=&quot;icon&quot; aria-hidden=&quot;true&quot;>&lt;use xlink:href=&quot;#mrdoc-icon-pro-2&quot;>&lt;/use>&lt;/svg> &lt;a href=&quot;/project/129/&quot; >IMES FA 相关文档 &lt;/a> &lt;i class=&quot;layui-icon layui-icon-star&quot; style=&quot;cursor: pointer;&quot; title=&quot;请登录后收藏&quot;>&lt;/i> &lt;p> &lt;/p> &lt;/div> &lt;!-- 文档搜索框 --> &lt;form action=&quot;/project/129/&quot; method=&quot;get&quot; class=&quot;project-search-div&quot; > &lt;div id=&quot;doc-search-input&quot;> &lt;input type=&quot;text&quot; name=&quot;kw&quot; placeholder=&quot;在文集内搜索文档&quot; value=&quot;&quot; class=&quot;layui-input doc-search-input&quot;> &lt;button type=&quot;submit&quot; style=&quot;position: absolute;top:15px;right: 20px;border: none;background-color: white;cursor:pointer&quot;> &lt;i class=&quot;layui-icon layui-icon-search&quot;>&lt;/i> &lt;/button> &lt;/div> &lt;/form> &lt;!-- &lt;hr> --> &lt;!-- 遍历文集大纲 --> &lt;!-- 如果文集的文档数量超过999,使用异步加载文集目录 --> &lt;!-- 文档数量小于999,使用同步加载文集目录 --> &lt;nav> &lt;ul class=&quot;&quot;> &lt;!-- 一级目录 --> &lt;li class=&quot;doctree-li&quot;> &lt;div class=&quot;doctree-item-wrapper&quot;> &lt;span class=&quot;doctree-item-name-wrapper&quot;> &lt;i class=&quot;layui-icon layui-icon-right switch-toc&quot;>&lt;/i>  &lt;a href=&quot;/doc/13858/&quot; class=&quot;doc-link&quot; data-id=&quot;13858&quot; title=&quot;MLB IMES&quot;> MLB IMES &lt;/a> &lt;/span> &lt;/div> &lt;div class=&quot;sub-items&quot;>&lt;ul class=&quot;doctree-ul&quot;> &lt;!-- 一级目录 --> &lt;li class=&quot;doctree-li&quot;> &lt;div class=&quot;doctree-item-wrapper&quot;> &lt;span class=&quot;doctree-item-name-wrapper&quot;> &lt;a href=&quot;/doc/13859/&quot; class=&quot;doc-link&quot; data-id=&quot;13859&quot; title=&quot;LNB换型事件标准内容&quot;> &lt;i class=&quot;iconfont mrdoc-icon-wendang&quot;>&lt;/i>  LNB换型事件标准内容 &lt;/a> &lt;/span> &lt;/div> &lt;/li> &lt;li class=&quot;doctree-li&quot;> &lt;div class=&quot;doctree-item-wrapper&quot;> &lt;span class=&quot;doctree-item-name-wrapper&quot;> &lt;a href=&quot;/doc/13870/&quot; class=&quot;doc-link&quot; data-id=&quot;13870&quot; title=&quot;LNB配置标准值&quot;> &lt;i class=&quot;iconfont mrdoc-icon-wendang&quot;>&lt;/i>  LNB配置标准值 &lt;/a> &lt;/span> &lt;/div> &lt;/li> &lt;/ul>&lt;/div> &lt;/li> &lt;/ul> &lt;/nav> &lt;div class=&quot;bq&quot;> &lt;a href=&quot;javascript:void(0);&quot; class=&quot;mrdoc-link&quot;>立臻IT知识库&lt;/a> &lt;/div> &lt;!-- 右下角广告块 --> &lt;!-- 广告代码开始 --> &lt;!-- 广告代码结束 --> &lt;/div> &lt;/div> &lt;!-- 左侧目录栏结束 --> &lt;div id=&quot;doc-container-splitter&quot;>&lt;/div> &lt;button class=&quot;doc-container-sidebar-toggle&quot; onclick=&quot;toggleSidebar()&quot;> &lt;svg class=&quot;doc-container-toggle-icon&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;24&quot; height=&quot;24&quot;> &lt;path d=&quot;M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z&quot;/> &lt;/svg> &lt;/button> &lt;!-- 右侧文档--> &lt;div id=&quot;doc-container-body&quot;> &lt;!-- 文档导航 --> &lt;div class=&quot;doc-header&quot; role=&quot;navigation&quot;> &lt;a class=&quot;btn pull-left js-toolbar-action&quot; aria-label=&quot;&quot; href=&quot;javascript:void(0);&quot; title=&quot;切换侧边栏&quot;> &lt;i class=&quot;layui-icon layui-icon-slider&quot;>&lt;/i> &lt;/a> &lt;a class=&quot;btn pull-left font-small layui-hide-xs&quot; href=&quot;javascript:void(0);&quot; title=&quot;缩小字体&quot;> &lt;i class=&quot;iconfont mrdoc-icon-font-size&quot;>-&lt;/i> &lt;/a> &lt;a class=&quot;btn pull-left font-large layui-hide-xs&quot; href=&quot;javascript:void(0);&quot; title=&quot;放大字体&quot;> &lt;i class=&quot;iconfont mrdoc-icon-font-size&quot;>+&lt;/i> &lt;/a> &lt;a class=&quot;btn pull-left font-switch layui-hide-xs&quot; href=&quot;javascript:void(0);&quot; title=&quot;切换字体类型&quot;> &lt;i class=&quot;iconfont mrdoc-icon-font-type&quot;>&lt;/i> &lt;/a> &lt;a class=&quot;btn pull-left theme-switch&quot; href=&quot;javascript:void(0);&quot; title=&quot;切换至夜间模式&quot;> &lt;i class=&quot;iconfont mrdoc-icon-night&quot;>&lt;/i> &lt;/a> &lt;!-- 顶部工具栏 --> &lt;a class=&quot;btn pull-right&quot; aria-label=&quot;&quot; href=&quot;/&quot;> &lt;i class=&quot;layui-icon layui-icon-home&quot;>&lt;/i> &lt;span class=&quot;layui-hide-xs&quot;>首页&lt;/span> &lt;/a> &lt;/div> &lt;!-- 文档主体 --> &lt;div class=&quot;doc-body-content&quot;> &lt;div class=&quot;doc-body-content-div&quot;> &lt;!-- 文档内容 --> &lt;div class=&quot;doc-content&quot; id=&quot;doc-content&quot;> &lt;!-- 标题 --> &lt;div class=&quot;doc-info&quot;> &lt;!-- 页面主体头信息 --> &lt;h1>LNB换型事件标准内容&lt;/h1>&lt;hr> &lt;!-- 广告代码开始 --> &lt;!-- 广告代码结束 --> &lt;/div> &lt;!-- 标题结束 --> &lt;!-- 正文开始 --> &lt;div class=&quot;markdown-body&quot; id=&quot;content&quot;> &lt;textarea style=&quot;display: none;&quot;>``` &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> &lt;root> &lt;Header> &lt;SystemName>UpperSystem&lt;/SystemName> &lt;SystemVersion>1.00&lt;/SystemVersion> &lt;SessionId>6984&lt;/SessionId> &lt;CommandName>CHANGE-REQUEST&lt;/CommandName> &lt;/Header> &lt;CHANGE-REQUEST> &lt;Index> &lt;Element> &lt;Date>2025/10/26,22:40:04&lt;/Date> &lt;MCNo>8&lt;/MCNo> &lt;Lane>1&lt;/Lane> &lt;LotName>639-23039$AK0_T04A_2617&lt;/LotName> &lt;Production>7264&lt;/Production> &lt;PlannedProduction>0&lt;/PlannedProduction> &lt;PassData>0&lt;/PassData> &lt;DataCount>10&lt;/DataCount> &lt;MountMode>1&lt;/MountMode> &lt;LaneMode>1&lt;/LaneMode> &lt;/Element> &lt;/Index> &lt;/CHANGE-REQUEST> &lt;/root> ```&lt;/textarea> &lt;/div> &lt;!-- 正文结束 --> &lt;div class=&quot;markdown-body&quot;> &lt;!-- 文档附件 --> &lt;/div> &lt;hr> &lt;/div> &lt;!-- 分享栏 --> &lt;div id=&quot;doc-content-bottom-toolbar&quot; style=&quot;color: rgba(0,0,0,.65);padding-bottom: 10px;margin-top: 10px;&quot;> &lt;div class=&quot;layui-row&quot; style=&quot;margin-bottom: 10px;padding-left: 20px;&quot;> &lt;/div> &lt;div class=&quot;layui-row layui-col-space20&quot; style=&quot;padding-left: 20px;&quot;> &lt;span class=&quot;doc-bottom-icon&quot;> &lt;i class=&quot;layui-icon layui-icon-user&quot;>&lt;/i> 宋恒林(K17082150) &lt;/span> &lt;span tooltip=&quot;更新于:2025年11月4日 11:50&quot; class=&quot;doc-bottom-icon&quot;> &lt;i class=&quot;layui-icon layui-icon-log&quot;>&lt;/i> 2025年11月4日 11:50 &lt;/span> &lt;button id=&quot;share&quot; class=&quot;doc-bottom-btn&quot; tooltip=&quot;转发本文档&quot;> &lt;i class=&quot;layui-icon layui-icon-share&quot; >&lt;/i> 转发文档 &lt;/button> &lt;span class=&quot;doc-bottom-icon&quot;> &lt;i class=&quot;layui-icon layui-icon-star&quot; title=&quot;请登录后收藏&quot;>&lt;/i> 收藏文档 &lt;/span> &lt;/div> &lt;/div> &lt;!-- 广告代码开始 --> &lt;!-- 广告代码结束 --> &lt;div class=&quot;layui-row page-flip&quot; style=&quot;margin-top: 10px;padding:10px;display:flex;justify-content:space-around;&quot;> &lt;!-- &lt;hr> --> &lt;div> &lt;a href=&quot;/doc/13858/&quot; class=&quot;layui-btn layui-btn-primary layui-btn-sm layui-btn-radius&quot;>&lt;i class=&quot;layui-icon layui-icon-prev &quot;>&lt;/i>上一篇&lt;/a> &lt;/div> &lt;div> &lt;a href=&quot;/doc/13870/&quot; class=&quot;layui-btn layui-btn-primary layui-btn-sm layui-btn-radius&quot;>下一篇&lt;i class=&quot;layui-icon layui-icon-next&quot;>&lt;/i>&lt;/a> &lt;/div> &lt;/div> &lt;/div> &lt;!-- 文档目录 --> &lt;div id=&quot;toc-container&quot; class='sidebar doc-toc-hide'>&lt;/div> &lt;/div> &lt;/div> &lt;!-- 右侧文档栏结束 --> &lt;/div> &lt;!-- 右下角工具按钮 --> &lt;div class=&quot;fixed-tool-bar&quot;> &lt;div class=&quot;toTop&quot; >&lt;i class=&quot;layui-icon layui-icon-up&quot;>&lt;/i>&lt;/div> &lt;a class=&quot;tocMenu&quot; href=&quot;/feedback/?source=/doc/13859/&quot; target=&quot;_blank&quot; title=&quot;反馈问题&quot;>&lt;i class=&quot;layui-icon layui-icon-help&quot;>&lt;/i>&lt;/a> &lt;!-- 修改文档 --> &lt;!-- 目录 --> &lt;div class=&quot;tocMenu&quot; style=&quot;display: none;&quot;>&lt;i class=&quot;iconfont mrdoc-icon-toc&quot;>&lt;/i>&lt;/div> &lt;!-- 分享按钮 --> &lt;/div> &lt;!-- 转发选项卡模板 --> &lt;div id=&quot;share_div&quot; style=&quot;display: none;&quot;> &lt;div class=&quot;layui-tab layui-tab-brief&quot; lay-filter=&quot;docDemoTabBrief&quot;> &lt;ul class=&quot;layui-tab-title&quot;> &lt;li class=&quot;layui-this&quot;>手机扫码&lt;/li> &lt;li>复制链接&lt;/li> &lt;/ul> &lt;div class=&quot;layui-tab-content&quot; style=&quot;height: 100px;&quot;> &lt;div class=&quot;layui-tab-item layui-show&quot; align='center'> &lt;p style=&quot;font-weight: 700;margin-bottom: 10px;&quot;>手机扫一扫转发分享&lt;/p> &lt;div id=&quot;url_qrcode&quot;>&lt;/div> &lt;/div> &lt;div class=&quot;layui-tab-item mrdoc-margin-1&quot; align='center'> &lt;input type=&quot;text&quot; id=&quot;copy_crt_url&quot; name=&quot;current_url&quot; class=&quot;layui-input&quot; />&lt;br> &lt;button class=&quot;layui-btn layui-btn-xs&quot; title=&quot;复制链接到粘贴板&quot; style=&quot;background-color: #333;&quot; id=&quot;copy_doc_url&quot;&quot;>复制链接&lt;/button> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;script src=&quot;/jsi18n/&quot;>&lt;/script> &lt;script src=&quot;/static/jquery/3.5.0/jquery.min.js&quot;>&lt;/script> &lt;script src=&quot;/static/PearAdminLayui/component/layui/layui.js?version=1.5.2&quot;>&lt;/script> &lt;script src=&quot;/static/viewerjs/viewer.min.js?version=1.5.2&quot;>&lt;/script> &lt;script src=&quot;/static/qrcodejs/qrcode.min.js?version=1.5.2&quot;>&lt;/script> &lt;script src=&quot;/static/darkmode-js/darkmode-js.min.js?version=1.5.2&quot;>&lt;/script> &lt;script src=&quot;/static/markjs/mark.min.js?version=1.5.2&quot; charset=&quot;UTF-8&quot;>&lt;/script> &lt;script> var layer = layui.layer; var laypage = layui.laypage; var dropdown = layui.dropdown; var element = layer.element; var pro_id = '129'; var csrf_token_str = '9hHLbYlxdkYf55nfUhSKj3dAUzQCuVI1VzCbKwPfwCiTOcYqXo4NiKkf4UQfuYMw'; var is_creater = false; var code_line_number = true; &lt;/script> &lt;script src=&quot;/static/mrdoc/mrdoc-docs.js?version=1.5.2&quot;>&lt;/script> &lt;script src=&quot;/static/iconFont/iconfont.js?version=1.5.2&quot;>&lt;/script> &lt;script> var layer = layui.layer; var dropdown = layui.dropdown; var pro_id = '129'; var csrf_token_str = '9hHLbYlxdkYf55nfUhSKj3dAUzQCuVI1VzCbKwPfwCiTOcYqXo4NiKkf4UQfuYMw'; var doc_editor_mode; if(is_creater){ renderTocDropDown() } function renderTocDropDown(){ dropdown.render({ elem: '.doctree-item-btn', trigger:'hover', data: [ {title:'修改文档',id:'modify'}, {title:'新增文档',id:'add'}, {title:'复制链接',id:'copy'}, ], click:function(obj){ // console.log(obj) var elem = $(this.elem) // console.log(elem.data('id')) switch (obj.id) { case 'modify': window.location.href = `/modify_doc/${elem.data('id')}/`; break; case 'add': window.location.href = `/create_doc/?pid=${pro_id}&parent_id=${elem.data('id')}`; break; case 'copy': var baseURL = window.location.protocol + &quot;//&quot; + window.location.host copyToClipboard(`${baseURL}/doc/${elem.data('id')}/`) break; default: break; } } }); }; &lt;/script> &lt;script src=&quot;/static/mr-marked/marked.min.js?version=1.5.2&quot;>&lt;/script> &lt;!-- 文档评论相关js --> &lt;!-- 动态添加广告代码 --> &lt;div id=&quot;ad-1&quot;> &lt;/div> &lt;div id=&quot;ad-2&quot;> &lt;/div> &lt;div id=&quot;ad-3&quot;> &lt;/div> &lt;div id=&quot;ad-4&quot;> &lt;/div> &lt;script> $(&quot;#ad-1&quot;).appendTo($(&quot;#ad-code-1&quot;)); $(&quot;#ad-2&quot;).appendTo($(&quot;#ad-code-2&quot;)); $(&quot;#ad-3&quot;).appendTo($(&quot;#ad-code-3&quot;)); $(&quot;#ad-4&quot;).appendTo($(&quot;#ad-code-4&quot;)); &lt;/script> &lt;!-- 广告代码结束 --> &lt;!-- 统计代码开始 --> &lt;!-- 统计代码结束 --> &lt;!-- 解析渲染Markdown --> &lt;script> var editor_mode = 1; var pro_id = 129; var doc_id = 13859; var is_auth = false; initDocRender(mode=editor_mode); // 图片放大显示 var img_options = { url: 'data-original', fullscreen:false,//全屏 rotatable:false,//旋转 scalable:false,//翻转 button:false,//关闭按钮 toolbar:false, title:false, }; var img_viewer = new Viewer(document.getElementById('content'), img_options); &lt;/script> &lt;!-- 下载选项卡模板 --> &lt;div id=&quot;download_div&quot; style=&quot;display: none;&quot;> &lt;div class=&quot;layui-row&quot; style=&quot;margin: 10px;&quot;> &lt;a class=&quot;layui-btn layui-btn-primary layui-btn-sm&quot; download='LNB换型事件标准内容.md' href=&quot;/download_doc_md/13859/&quot; target=&quot;_blank&quot;> Markdown文件 &lt;/a> &lt;button class=&quot;layui-btn layui-btn-primary layui-btn-sm&quot; href=&quot;/download_doc_docx/13859/&quot; id=&quot;download-doc-docx&quot;> Word文件 &lt;/button> &lt;button class=&quot;layui-btn layui-btn-primary layui-btn-sm&quot; id=&quot;download-doc-pdf&quot;> PDF文档 &lt;/button> &lt;a href=&quot;?print=true&quot; target=&quot;_blank&quot; class=&quot;layui-btn layui-btn-primary layui-btn-sm&quot; >PDF文档(打印)&lt;/a> &lt;/div> &lt;/div> &lt;!-- 分享文档选项卡模板 --> &lt;div id=&quot;share_doc_div&quot; style=&quot;display: none;margin:10px;&quot;> &lt;div class=&quot;layui-tab-content&quot;> &lt;div class=&quot;layui-form layui-form-pane&quot; lay-filter=&quot;show-share-form&quot;> &lt;div class=&quot;layui-form-item&quot;> &lt;label class=&quot;layui-form-label&quot;>分享&lt;/label> &lt;div class=&quot;layui-input-block&quot;> &lt;input type=&quot;checkbox&quot; name=&quot;switch&quot; lay-skin=&quot;switch&quot; lay-text=&quot;开启|关闭&quot; lay-filter=&quot;share-switch&quot; > &lt;/div> &lt;/div> &lt;div class=&quot;layui-form&quot; style=&quot;display: none;&quot; id=&quot;share-link&quot;> &lt;div class=&quot;layui-form-item&quot;> &lt;label class=&quot;layui-form-label&quot;>链接&lt;/label> &lt;div class=&quot;layui-input-block&quot; id='copy_link'> &lt;input type=&quot;text&quot; name=&quot;share_link&quot; class=&quot;layui-input&quot; id=&quot;share_link&quot; readonly> &lt;/div> &lt;/div> &lt;/div> &lt;div class=&quot;layui-form-item&quot; style=&quot;display:none;&quot; id=&quot;share-type&quot;> &lt;label class=&quot;layui-form-label&quot;>类型&lt;/label> &lt;div class=&quot;layui-input-block&quot;> &lt;input type=&quot;radio&quot; name=&quot;share_type&quot; value=&quot;0&quot; title=&quot;公开&quot; checked lay-filter=&quot;share_type&quot;> &lt;input type=&quot;radio&quot; name=&quot;share_type&quot; value=&quot;1&quot; title=&quot;私密&quot; lay-filter=&quot;share_type&quot;> &lt;/div> &lt;/div> &lt;div class=&quot;layui-form&quot; style=&quot;display:none;&quot; id=&quot;share_value_item&quot;> &lt;div class=&quot;layui-form-item&quot;> &lt;label class=&quot;layui-form-label&quot;>密码&lt;/label> &lt;div class=&quot;layui-input-inline&quot;> &lt;input type=&quot;text&quot; name=&quot;share_value&quot; value='' disabled class=&quot;layui-input&quot; id=&quot;share_doc_value&quot;> &lt;/div> &lt;div class=&quot;layui-form-mid layui-word-aux&quot;> &lt;button class=&quot;layui-btn layui-btn-xs layui-btn-primary&quot; id=&quot;updateShareValue&quot;>&lt;i class=&quot;layui-icon layui-icon-refresh&quot;>&lt;/i> 更新密码&lt;/button> &lt;/div> &lt;/div> &lt;/div> &lt;div class=&quot;layui-form-item&quot; style=&quot;display:none;&quot; id=&quot;share-expire&quot;> &lt;label class=&quot;layui-form-label&quot;>有效期&lt;/label> &lt;div class=&quot;layui-input-block&quot;> &lt;input type=&quot;radio&quot; name=&quot;expire_type&quot; value=&quot;-1&quot; title=&quot;永久&quot; checked lay-filter=&quot;expire_type&quot;> &lt;input type=&quot;radio&quot; name=&quot;expire_type&quot; value=&quot;3&quot; title=&quot;3天&quot; lay-filter=&quot;expire_type&quot;> &lt;input type=&quot;radio&quot; name=&quot;expire_type&quot; value=&quot;7&quot; title=&quot;7天&quot; lay-filter=&quot;expire_type&quot;> &lt;input type=&quot;radio&quot; name=&quot;expire_type&quot; value=&quot;15&quot; title=&quot;15天&quot; lay-filter=&quot;expire_type&quot;> &lt;input type=&quot;radio&quot; name=&quot;expire_type&quot; value=&quot;0&quot; title=&quot;自定义&quot; lay-filter=&quot;expire_type&quot;> &lt;div class=&quot;layui-input-inline&quot; id=&quot;expire_date_item&quot; style=&quot;display: none;&quot;> &lt;input type=&quot;text&quot; class=&quot;layui-input&quot; name=&quot;expire_date&quot; id=&quot;expire_date&quot; value=&quot;&quot; autocomplete=&quot;off&quot;> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;script src=&quot;/static/toc/doctoc.js?version=1.5.2&quot;>&lt;/script> &lt;script src=&quot;/static/clipboard/clipboard.min.js&quot;>&lt;/script> &lt;script> var layer = layui.layer; var form = layui.form; var laydate = layui.laydate; var doc_editor_mode = '1'; // Ajax默认配置 $.ajaxSetup({ data: {csrfmiddlewaretoken: '9hHLbYlxdkYf55nfUhSKj3dAUzQCuVI1VzCbKwPfwCiTOcYqXo4NiKkf4UQfuYMw' }, headers: {&quot;X-CSRFToken&quot;:'9hHLbYlxdkYf55nfUhSKj3dAUzQCuVI1VzCbKwPfwCiTOcYqXo4NiKkf4UQfuYMw'}, }); // 非小屏默认展开文档目录 if(window.innerWidth > 1650){ $(&quot;.sidebar&quot;).toggleClass(&quot;doc-toc-hide&quot;); } // 切换文档目录显示与否 $(&quot;.tocMenu&quot;).click(function() { // console.log(&quot;切换文档目录显示&quot;) $(&quot;.sidebar&quot;).toggleClass(&quot;doc-toc-hide&quot;); }); //修改a标签链接新窗口打开 // $('#content').on('click','a',function(e){ // e.target.target = '_blank'; // }); // 显示文档下载弹出框 $(&quot;#download_doc&quot;).click(function(r){ var layer = layui.layer; layer.open({ type: 1, title: false, closeBtn: 0, area: ['350px','150px'], shadeClose: true, content: $('#download_div') }); }); // 生成随机分享码 function randomWord(randomFlag, min, max){ var str = &quot;&quot;, range = min, arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; // 随机产生 if(randomFlag){ range = Math.round(Math.random() * (max-min)) + min; } for(var i=0; i&lt;range; i++){ pos = Math.round(Math.random() * (arr.length-1)); str += arr[pos]; } return str; }; // 更新文档分享状态 function updateDocShare(data){ $.ajax({ url:&quot;/share_doc/&quot;, method:'post', data:data, success:function(r){ if(r.status){ layer.msg(&quot;设置成功&quot;,{offset: 't'}) // console.log(r.data) $(&quot;input[name=share_link]&quot;).val(document.location.protocol + '//' + document.location.host + '/share_doc/?token=' + r.data.doc) }else{ layer.msg(&quot;设置出错&quot;) } }, error:function(){ layer.msg(&quot;文档分享异常&quot;) } }) } // 分享文档 $(&quot;#shareDoc&quot;).click(function(){ layer.open({ type:1, title:'分享文档:LNB换型事件标准内容', content:$(&quot;#share_doc_div&quot;), area:'450px', success : function(index, layero) { // 成功弹出后回调 form.render(); }, cannel: function(){ $(&quot;#share_doc_div&quot;).hide(); } }) }) var share_data = { 'id':'13859', } laydate.render({ elem: '#expire_date', mini:1, done: function(value, date, endDate){ // console.log(value); share_data['expire_date'] = value; updateDocShare(share_data); } }); // 复制分享URL及分享码 var copy_share_link = new ClipboardJS('#copy_link', { text: function() { let share_val = form.val(&quot;show-share-form&quot;); if(share_val['share_type'] == 0){ return share_val['share_link'] }else{ let share_link = share_val['share_link'] + &quot;&pwd=&quot; + share_val['share_value'] return share_link } } }); copy_share_link.on('success', function(e) { layer.msg(&quot;复制成功!&quot;) }); //监听分享框分享类型的单选事件 form.on('radio(share_type)', function(data){ // console.log(data.value); //被点击的radio的value值 if(data.value == 0){ // 公开 $(&quot;#share_value_item&quot;).css(&quot;display&quot;,&quot;none&quot;); share_data['share_type'] = 0; share_data['share_value'] = $(&quot;#share_doc_value&quot;).val(); updateDocShare(share_data); }else if(data.value == 1){ // 私密 $(&quot;#share_value_item&quot;).css(&quot;display&quot;,&quot;block&quot;); // console.log(&quot;初始化密码&quot;) $(&quot;#share_doc_value&quot;).val(randomWord(false,4)) share_data['share_type'] = 1; share_data['share_value'] = $(&quot;#share_doc_value&quot;).val(); updateDocShare(share_data); } }); // 监听分享有效期的单选事件 form.on('radio(expire_type)', function(data){ // console.log(data.value); //被点击的radio的value值 share_data['expire_type'] = data.value; if(data.value == 0){ // 自定义日期 $(&quot;#expire_date_item&quot;).css(&quot;display&quot;,&quot;block&quot;); layer.msg(&quot;请选择日期&quot;) share_data['expire_date'] = $(&quot;#expire_date&quot;).val(); // updateDocShare(share_data); }else{ $(&quot;#expire_date_item&quot;).css(&quot;display&quot;,&quot;none&quot;); updateDocShare(share_data); } }); // 监听分享开关事件 form.on('switch(share-switch)', function(data){ console.log(data.elem.checked); //开关是否开启,true或者false if(data.elem.checked){ // 开启 // console.log(&quot;开启分享&quot;) $(&quot;#share-type&quot;).css('display',&quot;block&quot;); $(&quot;#share-expire&quot;).css('display',&quot;block&quot;); $(&quot;#share-link&quot;).css(&quot;display&quot;,&quot;block&quot;); if($(&quot;input[name='share_type']:checked&quot;).val() == 1){ $(&quot;#share_value_item&quot;).css(&quot;display&quot;,&quot;block&quot;); } // 开启 share_data['is_enable'] = true updateDocShare(share_data); }else{ // console.log(&quot;关闭分享&quot;) layer.msg(&quot;关闭分享&quot;,{offset: 't'}) $(&quot;#share-type&quot;).css('display',&quot;none&quot;) $(&quot;#share-expire&quot;).css('display',&quot;none&quot;) $(&quot;#share_value_item&quot;).css(&quot;display&quot;,&quot;none&quot;); $(&quot;#share-link&quot;).css(&quot;display&quot;,&quot;none&quot;); share_data['is_enable'] = false updateDocShare(share_data); } }); // 更新文档分享密码 $(&quot;#updateShareValue&quot;).click(function(){ $(&quot;#share_doc_value&quot;).val(randomWord(false,4)); share_data['share_type'] = 1; share_data['share_value'] = $(&quot;#share_doc_value&quot;).val(); updateDocShare(share_data); }); // 评论组件 &lt;/script> &lt;!-- 调用浏览器打印功能 --> &lt;!-- 文档PDF生成 --> &lt;script src=&quot;/static/jspdf/jspdf.umd.min.js?version=1.5.2 charset=&quot;utf-8&quot;>&lt;/script> &lt;script src=&quot;/static/html2canvas/html2canvas.min.js?version=1.5.2 charset=&quot;utf-8&quot;>&lt;/script> &lt;script type=&quot;text/javascript&quot;> // 文档生成PDF function doc2pdf() { //将整个页面转成canvas html2canvas(document.getElementById(&quot;doc-content&quot;),{useCORS:true,logging:true}).then(canvas => { var contentWidth = canvas.width; var contentHeight = canvas.height; //一页pdf显示html页面生成的canvas高度; var pageHeight = contentWidth / 592.28 * 841.89; //未生成pdf的html页面高度 var leftHeight = contentHeight; //页面偏移 var position = 0; //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高 var imgWidth = 555.28; //左右边距20 var imgHeight = 555.28/contentWidth * contentHeight; //左右边距20 var pageData = canvas.toDataURL('image/jpeg', 1.0); var doc = new jspdf.jsPDF('', 'pt', 'a4'); //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89) //当内容未超过pdf一页显示的范围,无需分页 if (leftHeight &lt; pageHeight) { doc.addImage(pageData, 'JPEG', 20, 0, imgWidth, imgHeight ); //左右边距20 } else { while(leftHeight > 0) { doc.addImage(pageData, 'JPEG', 20, position, imgWidth, imgHeight) //左右边距20 leftHeight -= pageHeight; position -= 841.89; //避免添加空白页 if(leftHeight > 0) { doc.addPage(); } } }; doc.save('LNB换型事件标准内容.pdf'); }); }; $(&quot;#download-doc-pdf&quot;).click(function(){ layer.load(&quot;PDF生成中……&quot;) doc2pdf(); layer.closeAll(); $(&quot;#download_div&quot;).css(&quot;display&quot;,&quot;none&quot;); }) &lt;/script> &lt;script> $(&quot;#download-doc-docx&quot;).click(function(){ layer.load() $.ajax({ url:'/download_doc_docx/13859/', type:'post', success:function(r){ layer.closeAll() if(r.status){ var downloadLink = $('&lt;a>&lt;/a>') .attr('href', r.data) downloadLink[0].click(); downloadLink.remove(); }else{ layer.msg(r.data) } }, error:function(){ layer.closeAll() layer.msg(&quot;文档导出Docx文件请求异常&quot;) } }) }) &lt;/script> &lt;script> // 解析文档片段 parseFragment(); &lt;/script> &lt;!-- 在线表格文档根据窗口高度调整表格高度 --> &lt;!-- 文集作者或文档作者的JavaScript相关函数 --> &lt;script> // 文档顶部「新建」按钮的下拉菜单 dropdown.render({ elem: '#create-doc-btn', trigger: 'hover', data: [ { title: '文本文档', id: 'text' },{ title: '表格文档', id: 'table' },{ title: '超链接', id: 'link' },{ title:'OnlyOffice', id:'OnlyOffice', },{ title:'思维导图', id:'mindmap', } ], click: function(data, othis){ if(data.id == 'text'){ window.location.href = '/create_doc/?pid=' + pro_id }else if(data.id == 'table'){ window.location.href = '/create_doc/?pid=' + pro_id + '&eid=4' }else if(data.id == 'link'){ window.location.href = '/create_doc/?pid=' + pro_id + '&eid=5' }else if(data.id == 'OnlyOffice'){ window.location.href = '/onlyoffice/create?pid=' + pro_id }else if(data.id == 'mindmap'){ window.location.href = '/create_doc/?pid=' + pro_id + '&eid=9' } } }); // 侦听文集大纲滚动 // document.getElementById(&quot;doc-summary&quot;).addEventListener('scroll', function(){ // let t = $('.doc-summary').scrollTop(); // 目前监听的是整个body的滚动条距离 // let h = $('.doc-summary').height(); // 文集大纲的高度 // let a = document.getElementById(&quot;doc-search-input&quot;).offsetTop; // 搜索框至顶部的距离 // // console.log(&quot;滚动距离:&quot;,t,'div高度:',h,'顶部距离:',a) // if(t == 0){ // // console.log(&quot;在可视范围&quot;) // $('.project-search-div').removeClass('project-search-active-div') // }else{ // if (a >= t && a &lt; (t + h)) { // // // console.log(&quot;在可视范围&quot;) // $('.project-search-div').removeClass('project-search-active-div') // } // else{ // // console.log(&quot;不在可视范围&quot;) // $('.project-search-div').addClass('project-search-active-div') // } // } // }); // 高亮搜索词 setTimeout(function(){ keyLight('doc-content',getQueryVariable(&quot;highlight&quot;)); scrollIntoKey('doc-content',getQueryVariable(&quot;highlight&quot;)); },500) document.addEventListener('mouseup', function() { var selection = window.getSelection().toString(); let { x , y } = getSelectionEndPosition(); // console.log(x,y) if (selection) { var range = window.getSelection().getRangeAt(0); var button = document.createElement('button'); button.id = &quot;feedbackBtn&quot;; button.textContent = '我要反馈'; var div = document.createElement('div'); div.appendChild(button); div.style.position = 'absolute'; button.classList.add(&quot;layui-btn&quot;,&quot;layui-btn-normal&quot;,&quot;layui-btn-xs&quot;,&quot;layui-btn-radius&quot;) div.style.top = y + window.pageYOffset + 'px'; div.style.left = x + window.pageXOffset + 'px'; // div.style.top = range.getBoundingClientRect().top + 30 + window.pageYOffset + 'px'; // div.style.left = range.getBoundingClientRect().right + window.pageXOffset + 'px'; document.body.appendChild(div); // range.commonAncestorContainer.parentNode.appendChild(div); document.addEventListener('mousedown', function(event) { if (event.target === button) { feedbackDialog({'url':document.location.href,'content':selection.toString()}); } else if (!div.contains(event.target)) { div.remove(); } }); } }); feedbackDialog = function(value){ // console.log(value['url'],value['content']) window.open(&quot;/feedback/?source=&quot;+value['url']+'&content='+value['content']) }; function getSelectionEndPosition() { let x, y; let selection = window.getSelection(); if (selection.rangeCount > 0) { let range = selection.getRangeAt(0); let startNode = range.startContainer; let startOffset = range.startOffset; let endNode = range.endContainer; let endOffset = range.endOffset; let tempRange = document.createRange(); tempRange.setStart(endNode, endOffset); tempRange.collapse(true); let clientRects = tempRange.getClientRects(); if (clientRects.length > 0) { let lastRect = clientRects[clientRects.length - 1]; x = lastRect.right; y = lastRect.bottom; } } return { x, y }; }; &lt;/script> &lt;script> const docContainer = document.getElementById('doc-container'); const docSidebar = document.getElementById('doc-container-sidebar'); const docSplitter = document.getElementById('doc-container-splitter'); let isResizing = false; // 从 localStorage 获取上一次保存的宽度 const savedWidth = localStorage.getItem('sidebar-width'); if (savedWidth) { docContainer.style.setProperty('--sidebar-width', savedWidth); docSidebar.style.width = savedWidth; } docSplitter.addEventListener('mousedown', (e) => { isResizing = true; docSplitter.classList.add('active'); document.addEventListener('mousemove', handleMouseMove); document.addEventListener('mouseup', () => { isResizing = false; docSplitter.classList.remove('active'); document.removeEventListener('mousemove', handleMouseMove); }); }); function handleMouseMove(e) { if (isResizing) { const containerRect = docContainer.getBoundingClientRect(); const newSidebarWidth = e.clientX - containerRect.left; // 限制最大宽度 const maxWidth = 800; // 可以根据需要修改 if (newSidebarWidth &lt;= maxWidth) { // 保存当前宽度到 localStorage localStorage.setItem('sidebar-width', `${newSidebarWidth}px`); docContainer.style.setProperty('--sidebar-width', `${newSidebarWidth}px`); docSidebar.style.width = `${newSidebarWidth}px`; } } } &lt;/script> &lt;!-- 微信JS-SDK开始 --> &lt;!-- 微信JS-SDK结束 --> &lt;/body> &lt;/html> Process finished with exit code 0 将上面的html格式转成json格式,写Python代码获取
最新发布
11-05
&lt;!DOCTYPE html> &lt;html lang=&quot;zh-cn&quot; style=&quot;font-size: 15px;&quot;> &lt;head> &lt;meta charset=&quot;UTF-8&quot;> &lt;meta name=renderer content=webkit> &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=Edge,chrome=1&quot;> &lt;meta http-equiv=&quot;Cache-Control&quot; content=&quot;no-transform&quot; /> &lt;meta http-equiv=&quot;Cache-Control&quot; content=&quot;no-siteapp&quot; /> &lt;meta http-equiv=&quot;Cache-Control&quot; content=&quot;max-age=7200&quot; /> &lt;!-- &lt;meta name=&quot;referrer&quot; content=&quot;no-referrer&quot;> --> &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1, maximum-scale=1&quot;> &lt;meta name=&quot;keywords&quot; content=&quot;LNB换型事件标准内容,IMES FA 相关文档,技术,架构,流程,知识,规范,标准化&quot;/> &lt;meta name=&quot;description&quot; content=&quot;``` &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> &lt;root> &lt;Header> &lt;SystemName>UpperSystem&lt;/SystemName&quot; /> &lt;!-- OGP分享协议开始 --> &lt;meta property=&quot;og:type&quot; content=&quot;website&quot;> &lt;meta property=&quot;og:title&quot; content=&quot;LNB换型事件标准内容 - IMES FA 相关文档&quot;> &lt;meta property=&quot;og:description&quot; content=&quot;``` &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> &lt;root> &lt;Header> &lt;SystemName>UpperSystem&lt;/SystemName&quot;> &lt;meta property=&quot;og:url&quot; content=&quot;http://kk.luxsan-ict.com/doc/13859/&quot;> &lt;link rel=&quot;icon&quot; href=&quot;/static/search/mrdoc_logo_300.png&quot; sizes=&quot;192x192&quot; /> &lt;meta property=&quot;og:image&quot; content=&quot;http://kk.luxsan-ict.com/static/search/mrdoc_logo_300.png&quot;> &lt;!-- OGP分享协议结束 --> &lt;title>LNB换型事件标准内容 - IMES FA 相关文档 - 立臻IT知识库 &lt;/title> &lt;link href=&quot;/static/PearAdminLayui/component/layui/css/layui.css?version=1.5.2&quot; rel=&quot;stylesheet&quot;> &lt;link rel=&quot;stylesheet&quot; href=&quot;/static/mr-marked/marked.css?version=1.5.2&quot; /> &lt;link href=&quot;/static/viewerjs/viewer.min.css?version=1.5.2&quot; rel=&quot;stylesheet&quot;> &lt;link href=&quot;/static/mrdoc/mrdoc.css?version=1.5.2&quot; rel=&quot;stylesheet&quot;> &lt;link href=&quot;/static/mrdoc/mrdoc-docs.css?version=1.5.2&quot; rel=&quot;stylesheet&quot;> &lt;link href=&quot;/static/iconFont/iconfont.css?version=1.5.2&quot; rel=&quot;stylesheet&quot;> &lt;style> .markdown-code .markdown-code-block pre,.vditor-reset > pre > code.hljs{ max-height: max-content!important; } code[class*=language-], pre[class*=language-]{ white-space: pre-wrap !important; } :not(pre)>code[class*=language-]{ white-space: inherit !important; } /* html{ filter: invert(1) hue-rotate(180deg); } */ &lt;/style> &lt;!--[if lt IE 9]> &lt;script src=&quot;https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js&quot;>&lt;/script> &lt;script src=&quot;https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js&quot;>&lt;/script> &lt;![endif]--> &lt;/head> &lt;body class=&quot;big-page&quot;> &lt;div id=&quot;doc-container&quot;> &lt;!-- 左侧目录栏 --> &lt;div id=&quot;doc-container-sidebar&quot; id=&quot;doc-summary&quot;> &lt;div> &lt;!-- 左上角广告块 --> &lt;!-- 广告代码开始 --> &lt;!-- 广告代码结束 --> &lt;!-- 文集名称 --> &lt;div class=&quot;project-title&quot;> &lt;svg class=&quot;icon&quot; aria-hidden=&quot;true&quot;>&lt;use xlink:href=&quot;#mrdoc-icon-pro-2&quot;>&lt;/use>&lt;/svg> &lt;a href=&quot;/project/129/&quot; >IMES FA 相关文档 &lt;/a> &lt;i class=&quot;layui-icon layui-icon-star&quot; style=&quot;cursor: pointer;&quot; title=&quot;请登录后收藏&quot;>&lt;/i> &lt;p> &lt;/p> &lt;/div> &lt;!-- 文档搜索框 --> &lt;form action=&quot;/project/129/&quot; method=&quot;get&quot; class=&quot;project-search-div&quot; > &lt;div id=&quot;doc-search-input&quot;> &lt;input type=&quot;text&quot; name=&quot;kw&quot; placeholder=&quot;在文集内搜索文档&quot; value=&quot;&quot; class=&quot;layui-input doc-search-input&quot;> &lt;button type=&quot;submit&quot; style=&quot;position: absolute;top:15px;right: 20px;border: none;background-color: white;cursor:pointer&quot;> &lt;i class=&quot;layui-icon layui-icon-search&quot;>&lt;/i> &lt;/button> &lt;/div> &lt;/form> &lt;!-- &lt;hr> --> &lt;!-- 遍历文集大纲 --> &lt;!-- 如果文集的文档数量超过999,使用异步加载文集目录 --> &lt;!-- 文档数量小于999,使用同步加载文集目录 --> &lt;nav> &lt;ul class=&quot;&quot;> &lt;!-- 一级目录 --> &lt;li class=&quot;doctree-li&quot;> &lt;div class=&quot;doctree-item-wrapper&quot;> &lt;span class=&quot;doctree-item-name-wrapper&quot;> &lt;i class=&quot;layui-icon layui-icon-right switch-toc&quot;>&lt;/i>  &lt;a href=&quot;/doc/13858/&quot; class=&quot;doc-link&quot; data-id=&quot;13858&quot; title=&quot;MLB IMES&quot;> MLB IMES &lt;/a> &lt;/span> &lt;/div> &lt;div class=&quot;sub-items&quot;>&lt;ul class=&quot;doctree-ul&quot;> &lt;!-- 一级目录 --> &lt;li class=&quot;doctree-li&quot;> &lt;div class=&quot;doctree-item-wrapper&quot;> &lt;span class=&quot;doctree-item-name-wrapper&quot;> &lt;a href=&quot;/doc/13859/&quot; class=&quot;doc-link&quot; data-id=&quot;13859&quot; title=&quot;LNB换型事件标准内容&quot;> &lt;i class=&quot;iconfont mrdoc-icon-wendang&quot;>&lt;/i>  LNB换型事件标准内容 &lt;/a> &lt;/span> &lt;/div> &lt;/li> &lt;li class=&quot;doctree-li&quot;> &lt;div class=&quot;doctree-item-wrapper&quot;> &lt;span class=&quot;doctree-item-name-wrapper&quot;> &lt;a href=&quot;/doc/13870/&quot; class=&quot;doc-link&quot; data-id=&quot;13870&quot; title=&quot;LNB配置标准值&quot;> &lt;i class=&quot;iconfont mrdoc-icon-wendang&quot;>&lt;/i>  LNB配置标准值 &lt;/a> &lt;/span> &lt;/div> &lt;/li> &lt;/ul>&lt;/div> &lt;/li> &lt;/ul> &lt;/nav> &lt;div class=&quot;bq&quot;> &lt;a href=&quot;javascript:void(0);&quot; class=&quot;mrdoc-link&quot;>立臻IT知识库&lt;/a> &lt;/div> &lt;!-- 右下角广告块 --> &lt;!-- 广告代码开始 --> &lt;!-- 广告代码结束 --> &lt;/div> &lt;/div> &lt;!-- 左侧目录栏结束 --> &lt;div id=&quot;doc-container-splitter&quot;>&lt;/div> &lt;button class=&quot;doc-container-sidebar-toggle&quot; onclick=&quot;toggleSidebar()&quot;> &lt;svg class=&quot;doc-container-toggle-icon&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;24&quot; height=&quot;24&quot;> &lt;path d=&quot;M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z&quot;/> &lt;/svg> &lt;/button> &lt;!-- 右侧文档--> &lt;div id=&quot;doc-container-body&quot;> &lt;!-- 文档导航 --> &lt;div class=&quot;doc-header&quot; role=&quot;navigation&quot;> &lt;a class=&quot;btn pull-left js-toolbar-action&quot; aria-label=&quot;&quot; href=&quot;javascript:void(0);&quot; title=&quot;切换侧边栏&quot;> &lt;i class=&quot;layui-icon layui-icon-slider&quot;>&lt;/i> &lt;/a> &lt;a class=&quot;btn pull-left font-small layui-hide-xs&quot; href=&quot;javascript:void(0);&quot; title=&quot;缩小字体&quot;> &lt;i class=&quot;iconfont mrdoc-icon-font-size&quot;>-&lt;/i> &lt;/a> &lt;a class=&quot;btn pull-left font-large layui-hide-xs&quot; href=&quot;javascript:void(0);&quot; title=&quot;放大字体&quot;> &lt;i class=&quot;iconfont mrdoc-icon-font-size&quot;>+&lt;/i> &lt;/a> &lt;a class=&quot;btn pull-left font-switch layui-hide-xs&quot; href=&quot;javascript:void(0);&quot; title=&quot;切换字体类型&quot;> &lt;i class=&quot;iconfont mrdoc-icon-font-type&quot;>&lt;/i> &lt;/a> &lt;a class=&quot;btn pull-left theme-switch&quot; href=&quot;javascript:void(0);&quot; title=&quot;切换至夜间模式&quot;> &lt;i class=&quot;iconfont mrdoc-icon-night&quot;>&lt;/i> &lt;/a> &lt;!-- 顶部工具栏 --> &lt;a class=&quot;btn pull-right&quot; aria-label=&quot;&quot; href=&quot;/&quot;> &lt;i class=&quot;layui-icon layui-icon-home&quot;>&lt;/i> &lt;span class=&quot;layui-hide-xs&quot;>首页&lt;/span> &lt;/a> &lt;/div> &lt;!-- 文档主体 --> &lt;div class=&quot;doc-body-content&quot;> &lt;div class=&quot;doc-body-content-div&quot;> &lt;!-- 文档内容 --> &lt;div class=&quot;doc-content&quot; id=&quot;doc-content&quot;> &lt;!-- 标题 --> &lt;div class=&quot;doc-info&quot;> &lt;!-- 页面主体头信息 --> &lt;h1>LNB换型事件标准内容&lt;/h1>&lt;hr> &lt;!-- 广告代码开始 --> &lt;!-- 广告代码结束 --> &lt;/div> &lt;!-- 标题结束 --> &lt;!-- 正文开始 --> &lt;div class=&quot;markdown-body&quot; id=&quot;content&quot;> &lt;textarea style=&quot;display: none;&quot;>``` &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> &lt;root> &lt;Header> &lt;SystemName>UpperSystem&lt;/SystemName> &lt;SystemVersion>1.00&lt;/SystemVersion> &lt;SessionId>6984&lt;/SessionId> &lt;CommandName>CHANGE-REQUEST&lt;/CommandName> &lt;/Header> &lt;CHANGE-REQUEST> &lt;Index> &lt;Element> &lt;Date>2025/10/26,22:40:04&lt;/Date> &lt;MCNo>8&lt;/MCNo> &lt;Lane>1&lt;/Lane> &lt;LotName>639-23039$AK0_T04A_2617&lt;/LotName> &lt;Production>7264&lt;/Production> &lt;PlannedProduction>0&lt;/PlannedProduction> &lt;PassData>0&lt;/PassData> &lt;DataCount>10&lt;/DataCount> &lt;MountMode>1&lt;/MountMode> &lt;LaneMode>1&lt;/LaneMode> &lt;/Element> &lt;/Index> &lt;/CHANGE-REQUEST> &lt;/root> ```&lt;/textarea> &lt;/div> &lt;!-- 正文结束 --> &lt;div class=&quot;markdown-body&quot;> &lt;!-- 文档附件 --> &lt;/div> &lt;hr> &lt;/div> &lt;!-- 分享栏 --> &lt;div id=&quot;doc-content-bottom-toolbar&quot; style=&quot;color: rgba(0,0,0,.65);padding-bottom: 10px;margin-top: 10px;&quot;> &lt;div class=&quot;layui-row&quot; style=&quot;margin-bottom: 10px;padding-left: 20px;&quot;> &lt;/div> &lt;div class=&quot;layui-row layui-col-space20&quot; style=&quot;padding-left: 20px;&quot;> &lt;span class=&quot;doc-bottom-icon&quot;> &lt;i class=&quot;layui-icon layui-icon-user&quot;>&lt;/i> 宋恒林(K17082150) &lt;/span> &lt;span tooltip=&quot;更新于:2025年11月4日 11:50&quot; class=&quot;doc-bottom-icon&quot;> &lt;i class=&quot;layui-icon layui-icon-log&quot;>&lt;/i> 2025年11月4日 11:50 &lt;/span> &lt;button id=&quot;share&quot; class=&quot;doc-bottom-btn&quot; tooltip=&quot;转发本文档&quot;> &lt;i class=&quot;layui-icon layui-icon-share&quot; >&lt;/i> 转发文档 &lt;/button> &lt;span class=&quot;doc-bottom-icon&quot;> &lt;i class=&quot;layui-icon layui-icon-star&quot; title=&quot;请登录后收藏&quot;>&lt;/i> 收藏文档 &lt;/span> &lt;/div> &lt;/div> &lt;!-- 广告代码开始 --> &lt;!-- 广告代码结束 --> &lt;div class=&quot;layui-row page-flip&quot; style=&quot;margin-top: 10px;padding:10px;display:flex;justify-content:space-around;&quot;> &lt;!-- &lt;hr> --> &lt;div> &lt;a href=&quot;/doc/13858/&quot; class=&quot;layui-btn layui-btn-primary layui-btn-sm layui-btn-radius&quot;>&lt;i class=&quot;layui-icon layui-icon-prev &quot;>&lt;/i>上一篇&lt;/a> &lt;/div> &lt;div> &lt;a href=&quot;/doc/13870/&quot; class=&quot;layui-btn layui-btn-primary layui-btn-sm layui-btn-radius&quot;>下一篇&lt;i class=&quot;layui-icon layui-icon-next&quot;>&lt;/i>&lt;/a> &lt;/div> &lt;/div> &lt;/div> &lt;!-- 文档目录 --> &lt;div id=&quot;toc-container&quot; class='sidebar doc-toc-hide'>&lt;/div> &lt;/div> &lt;/div> &lt;!-- 右侧文档栏结束 --> &lt;/div> &lt;!-- 右下角工具按钮 --> &lt;div class=&quot;fixed-tool-bar&quot;> &lt;div class=&quot;toTop&quot; >&lt;i class=&quot;layui-icon layui-icon-up&quot;>&lt;/i>&lt;/div> &lt;a class=&quot;tocMenu&quot; href=&quot;/feedback/?source=/doc/13859/&quot; target=&quot;_blank&quot; title=&quot;反馈问题&quot;>&lt;i class=&quot;layui-icon layui-icon-help&quot;>&lt;/i>&lt;/a> &lt;!-- 修改文档 --> &lt;!-- 目录 --> &lt;div class=&quot;tocMenu&quot; style=&quot;display: none;&quot;>&lt;i class=&quot;iconfont mrdoc-icon-toc&quot;>&lt;/i>&lt;/div> &lt;!-- 分享按钮 --> &lt;/div> &lt;!-- 转发选项卡模板 --> &lt;div id=&quot;share_div&quot; style=&quot;display: none;&quot;> &lt;div class=&quot;layui-tab layui-tab-brief&quot; lay-filter=&quot;docDemoTabBrief&quot;> &lt;ul class=&quot;layui-tab-title&quot;> &lt;li class=&quot;layui-this&quot;>手机扫码&lt;/li> &lt;li>复制链接&lt;/li> &lt;/ul> &lt;div class=&quot;layui-tab-content&quot; style=&quot;height: 100px;&quot;> &lt;div class=&quot;layui-tab-item layui-show&quot; align='center'> &lt;p style=&quot;font-weight: 700;margin-bottom: 10px;&quot;>手机扫一扫转发分享&lt;/p> &lt;div id=&quot;url_qrcode&quot;>&lt;/div> &lt;/div> &lt;div class=&quot;layui-tab-item mrdoc-margin-1&quot; align='center'> &lt;input type=&quot;text&quot; id=&quot;copy_crt_url&quot; name=&quot;current_url&quot; class=&quot;layui-input&quot; />&lt;br> &lt;button class=&quot;layui-btn layui-btn-xs&quot; title=&quot;复制链接到粘贴板&quot; style=&quot;background-color: #333;&quot; id=&quot;copy_doc_url&quot;&quot;>复制链接&lt;/button> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;script src=&quot;/jsi18n/&quot;>&lt;/script> &lt;script src=&quot;/static/jquery/3.5.0/jquery.min.js&quot;>&lt;/script> &lt;script src=&quot;/static/PearAdminLayui/component/layui/layui.js?version=1.5.2&quot;>&lt;/script> &lt;script src=&quot;/static/viewerjs/viewer.min.js?version=1.5.2&quot;>&lt;/script> &lt;script src=&quot;/static/qrcodejs/qrcode.min.js?version=1.5.2&quot;>&lt;/script> &lt;script src=&quot;/static/darkmode-js/darkmode-js.min.js?version=1.5.2&quot;>&lt;/script> &lt;script src=&quot;/static/markjs/mark.min.js?version=1.5.2&quot; charset=&quot;UTF-8&quot;>&lt;/script> &lt;script> var layer = layui.layer; var laypage = layui.laypage; var dropdown = layui.dropdown; var element = layer.element; var pro_id = '129'; var csrf_token_str = 'FYiG9BvZxlszgMJHivQ94WymudTPAWw8wrFI75LcqJDTMGzZqTw1jexUzwRvAb0B'; var is_creater = false; var code_line_number = true; &lt;/script> &lt;script src=&quot;/static/mrdoc/mrdoc-docs.js?version=1.5.2&quot;>&lt;/script> &lt;script src=&quot;/static/iconFont/iconfont.js?version=1.5.2&quot;>&lt;/script> &lt;script> var layer = layui.layer; var dropdown = layui.dropdown; var pro_id = '129'; var csrf_token_str = 'FYiG9BvZxlszgMJHivQ94WymudTPAWw8wrFI75LcqJDTMGzZqTw1jexUzwRvAb0B'; var doc_editor_mode; if(is_creater){ renderTocDropDown() } function renderTocDropDown(){ dropdown.render({ elem: '.doctree-item-btn', trigger:'hover', data: [ {title:'修改文档',id:'modify'}, {title:'新增文档',id:'add'}, {title:'复制链接',id:'copy'}, ], click:function(obj){ // console.log(obj) var elem = $(this.elem) // console.log(elem.data('id')) switch (obj.id) { case 'modify': window.location.href = `/modify_doc/${elem.data('id')}/`; break; case 'add': window.location.href = `/create_doc/?pid=${pro_id}&parent_id=${elem.data('id')}`; break; case 'copy': var baseURL = window.location.protocol + &quot;//&quot; + window.location.host copyToClipboard(`${baseURL}/doc/${elem.data('id')}/`) break; default: break; } } }); }; &lt;/script> &lt;script src=&quot;/static/mr-marked/marked.min.js?version=1.5.2&quot;>&lt;/script> &lt;!-- 文档评论相关js --> &lt;!-- 动态添加广告代码 --> &lt;div id=&quot;ad-1&quot;> &lt;/div> &lt;div id=&quot;ad-2&quot;> &lt;/div> &lt;div id=&quot;ad-3&quot;> &lt;/div> &lt;div id=&quot;ad-4&quot;> &lt;/div> &lt;script> $(&quot;#ad-1&quot;).appendTo($(&quot;#ad-code-1&quot;)); $(&quot;#ad-2&quot;).appendTo($(&quot;#ad-code-2&quot;)); $(&quot;#ad-3&quot;).appendTo($(&quot;#ad-code-3&quot;)); $(&quot;#ad-4&quot;).appendTo($(&quot;#ad-code-4&quot;)); &lt;/script> &lt;!-- 广告代码结束 --> &lt;!-- 统计代码开始 --> &lt;!-- 统计代码结束 --> &lt;!-- 解析渲染Markdown --> &lt;script> var editor_mode = 1; var pro_id = 129; var doc_id = 13859; var is_auth = false; initDocRender(mode=editor_mode); // 图片放大显示 var img_options = { url: 'data-original', fullscreen:false,//全屏 rotatable:false,//旋转 scalable:false,//翻转 button:false,//关闭按钮 toolbar:false, title:false, }; var img_viewer = new Viewer(document.getElementById('content'), img_options); &lt;/script> &lt;!-- 下载选项卡模板 --> &lt;div id=&quot;download_div&quot; style=&quot;display: none;&quot;> &lt;div class=&quot;layui-row&quot; style=&quot;margin: 10px;&quot;> &lt;a class=&quot;layui-btn layui-btn-primary layui-btn-sm&quot; download='LNB换型事件标准内容.md' href=&quot;/download_doc_md/13859/&quot; target=&quot;_blank&quot;> Markdown文件 &lt;/a> &lt;button class=&quot;layui-btn layui-btn-primary layui-btn-sm&quot; href=&quot;/download_doc_docx/13859/&quot; id=&quot;download-doc-docx&quot;> Word文件 &lt;/button> &lt;button class=&quot;layui-btn layui-btn-primary layui-btn-sm&quot; id=&quot;download-doc-pdf&quot;> PDF文档 &lt;/button> &lt;a href=&quot;?print=true&quot; target=&quot;_blank&quot; class=&quot;layui-btn layui-btn-primary layui-btn-sm&quot; >PDF文档(打印)&lt;/a> &lt;/div> &lt;/div> &lt;!-- 分享文档选项卡模板 --> &lt;div id=&quot;share_doc_div&quot; style=&quot;display: none;margin:10px;&quot;> &lt;div class=&quot;layui-tab-content&quot;> &lt;div class=&quot;layui-form layui-form-pane&quot; lay-filter=&quot;show-share-form&quot;> &lt;div class=&quot;layui-form-item&quot;> &lt;label class=&quot;layui-form-label&quot;>分享&lt;/label> &lt;div class=&quot;layui-input-block&quot;> &lt;input type=&quot;checkbox&quot; name=&quot;switch&quot; lay-skin=&quot;switch&quot; lay-text=&quot;开启|关闭&quot; lay-filter=&quot;share-switch&quot; > &lt;/div> &lt;/div> &lt;div class=&quot;layui-form&quot; style=&quot;display: none;&quot; id=&quot;share-link&quot;> &lt;div class=&quot;layui-form-item&quot;> &lt;label class=&quot;layui-form-label&quot;>链接&lt;/label> &lt;div class=&quot;layui-input-block&quot; id='copy_link'> &lt;input type=&quot;text&quot; name=&quot;share_link&quot; class=&quot;layui-input&quot; id=&quot;share_link&quot; readonly> &lt;/div> &lt;/div> &lt;/div> &lt;div class=&quot;layui-form-item&quot; style=&quot;display:none;&quot; id=&quot;share-type&quot;> &lt;label class=&quot;layui-form-label&quot;>类型&lt;/label> &lt;div class=&quot;layui-input-block&quot;> &lt;input type=&quot;radio&quot; name=&quot;share_type&quot; value=&quot;0&quot; title=&quot;公开&quot; checked lay-filter=&quot;share_type&quot;> &lt;input type=&quot;radio&quot; name=&quot;share_type&quot; value=&quot;1&quot; title=&quot;私密&quot; lay-filter=&quot;share_type&quot;> &lt;/div> &lt;/div> &lt;div class=&quot;layui-form&quot; style=&quot;display:none;&quot; id=&quot;share_value_item&quot;> &lt;div class=&quot;layui-form-item&quot;> &lt;label class=&quot;layui-form-label&quot;>密码&lt;/label> &lt;div class=&quot;layui-input-inline&quot;> &lt;input type=&quot;text&quot; name=&quot;share_value&quot; value='' disabled class=&quot;layui-input&quot; id=&quot;share_doc_value&quot;> &lt;/div> &lt;div class=&quot;layui-form-mid layui-word-aux&quot;> &lt;button class=&quot;layui-btn layui-btn-xs layui-btn-primary&quot; id=&quot;updateShareValue&quot;>&lt;i class=&quot;layui-icon layui-icon-refresh&quot;>&lt;/i> 更新密码&lt;/button> &lt;/div> &lt;/div> &lt;/div> &lt;div class=&quot;layui-form-item&quot; style=&quot;display:none;&quot; id=&quot;share-expire&quot;> &lt;label class=&quot;layui-form-label&quot;>有效期&lt;/label> &lt;div class=&quot;layui-input-block&quot;> &lt;input type=&quot;radio&quot; name=&quot;expire_type&quot; value=&quot;-1&quot; title=&quot;永久&quot; checked lay-filter=&quot;expire_type&quot;> &lt;input type=&quot;radio&quot; name=&quot;expire_type&quot; value=&quot;3&quot; title=&quot;3天&quot; lay-filter=&quot;expire_type&quot;> &lt;input type=&quot;radio&quot; name=&quot;expire_type&quot; value=&quot;7&quot; title=&quot;7天&quot; lay-filter=&quot;expire_type&quot;> &lt;input type=&quot;radio&quot; name=&quot;expire_type&quot; value=&quot;15&quot; title=&quot;15天&quot; lay-filter=&quot;expire_type&quot;> &lt;input type=&quot;radio&quot; name=&quot;expire_type&quot; value=&quot;0&quot; title=&quot;自定义&quot; lay-filter=&quot;expire_type&quot;> &lt;div class=&quot;layui-input-inline&quot; id=&quot;expire_date_item&quot; style=&quot;display: none;&quot;> &lt;input type=&quot;text&quot; class=&quot;layui-input&quot; name=&quot;expire_date&quot; id=&quot;expire_date&quot; value=&quot;&quot; autocomplete=&quot;off&quot;> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;script src=&quot;/static/toc/doctoc.js?version=1.5.2&quot;>&lt;/script> &lt;script src=&quot;/static/clipboard/clipboard.min.js&quot;>&lt;/script> &lt;script> var layer = layui.layer; var form = layui.form; var laydate = layui.laydate; var doc_editor_mode = '1'; // Ajax默认配置 $.ajaxSetup({ data: {csrfmiddlewaretoken: 'FYiG9BvZxlszgMJHivQ94WymudTPAWw8wrFI75LcqJDTMGzZqTw1jexUzwRvAb0B' }, headers: {&quot;X-CSRFToken&quot;:'FYiG9BvZxlszgMJHivQ94WymudTPAWw8wrFI75LcqJDTMGzZqTw1jexUzwRvAb0B'}, }); // 非小屏默认展开文档目录 if(window.innerWidth > 1650){ $(&quot;.sidebar&quot;).toggleClass(&quot;doc-toc-hide&quot;); } // 切换文档目录显示与否 $(&quot;.tocMenu&quot;).click(function() { // console.log(&quot;切换文档目录显示&quot;) $(&quot;.sidebar&quot;).toggleClass(&quot;doc-toc-hide&quot;); }); //修改a标签链接新窗口打开 // $('#content').on('click','a',function(e){ // e.target.target = '_blank'; // }); // 显示文档下载弹出框 $(&quot;#download_doc&quot;).click(function(r){ var layer = layui.layer; layer.open({ type: 1, title: false, closeBtn: 0, area: ['350px','150px'], shadeClose: true, content: $('#download_div') }); }); // 生成随机分享码 function randomWord(randomFlag, min, max){ var str = &quot;&quot;, range = min, arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; // 随机产生 if(randomFlag){ range = Math.round(Math.random() * (max-min)) + min; } for(var i=0; i&lt;range; i++){ pos = Math.round(Math.random() * (arr.length-1)); str += arr[pos]; } return str; }; // 更新文档分享状态 function updateDocShare(data){ $.ajax({ url:&quot;/share_doc/&quot;, method:'post', data:data, success:function(r){ if(r.status){ layer.msg(&quot;设置成功&quot;,{offset: 't'}) // console.log(r.data) $(&quot;input[name=share_link]&quot;).val(document.location.protocol + '//' + document.location.host + '/share_doc/?token=' + r.data.doc) }else{ layer.msg(&quot;设置出错&quot;) } }, error:function(){ layer.msg(&quot;文档分享异常&quot;) } }) } // 分享文档 $(&quot;#shareDoc&quot;).click(function(){ layer.open({ type:1, title:'分享文档:LNB换型事件标准内容', content:$(&quot;#share_doc_div&quot;), area:'450px', success : function(index, layero) { // 成功弹出后回调 form.render(); }, cannel: function(){ $(&quot;#share_doc_div&quot;).hide(); } }) }) var share_data = { 'id':'13859', } laydate.render({ elem: '#expire_date', mini:1, done: function(value, date, endDate){ // console.log(value); share_data['expire_date'] = value; updateDocShare(share_data); } }); // 复制分享URL及分享码 var copy_share_link = new ClipboardJS('#copy_link', { text: function() { let share_val = form.val(&quot;show-share-form&quot;); if(share_val['share_type'] == 0){ return share_val['share_link'] }else{ let share_link = share_val['share_link'] + &quot;&pwd=&quot; + share_val['share_value'] return share_link } } }); copy_share_link.on('success', function(e) { layer.msg(&quot;复制成功!&quot;) }); //监听分享框分享类型的单选事件 form.on('radio(share_type)', function(data){ // console.log(data.value); //被点击的radio的value值 if(data.value == 0){ // 公开 $(&quot;#share_value_item&quot;).css(&quot;display&quot;,&quot;none&quot;); share_data['share_type'] = 0; share_data['share_value'] = $(&quot;#share_doc_value&quot;).val(); updateDocShare(share_data); }else if(data.value == 1){ // 私密 $(&quot;#share_value_item&quot;).css(&quot;display&quot;,&quot;block&quot;); // console.log(&quot;初始化密码&quot;) $(&quot;#share_doc_value&quot;).val(randomWord(false,4)) share_data['share_type'] = 1; share_data['share_value'] = $(&quot;#share_doc_value&quot;).val(); updateDocShare(share_data); } }); // 监听分享有效期的单选事件 form.on('radio(expire_type)', function(data){ // console.log(data.value); //被点击的radio的value值 share_data['expire_type'] = data.value; if(data.value == 0){ // 自定义日期 $(&quot;#expire_date_item&quot;).css(&quot;display&quot;,&quot;block&quot;); layer.msg(&quot;请选择日期&quot;) share_data['expire_date'] = $(&quot;#expire_date&quot;).val(); // updateDocShare(share_data); }else{ $(&quot;#expire_date_item&quot;).css(&quot;display&quot;,&quot;none&quot;); updateDocShare(share_data); } }); // 监听分享开关事件 form.on('switch(share-switch)', function(data){ console.log(data.elem.checked); //开关是否开启,true或者false if(data.elem.checked){ // 开启 // console.log(&quot;开启分享&quot;) $(&quot;#share-type&quot;).css('display',&quot;block&quot;); $(&quot;#share-expire&quot;).css('display',&quot;block&quot;); $(&quot;#share-link&quot;).css(&quot;display&quot;,&quot;block&quot;); if($(&quot;input[name='share_type']:checked&quot;).val() == 1){ $(&quot;#share_value_item&quot;).css(&quot;display&quot;,&quot;block&quot;); } // 开启 share_data['is_enable'] = true updateDocShare(share_data); }else{ // console.log(&quot;关闭分享&quot;) layer.msg(&quot;关闭分享&quot;,{offset: 't'}) $(&quot;#share-type&quot;).css('display',&quot;none&quot;) $(&quot;#share-expire&quot;).css('display',&quot;none&quot;) $(&quot;#share_value_item&quot;).css(&quot;display&quot;,&quot;none&quot;); $(&quot;#share-link&quot;).css(&quot;display&quot;,&quot;none&quot;); share_data['is_enable'] = false updateDocShare(share_data); } }); // 更新文档分享密码 $(&quot;#updateShareValue&quot;).click(function(){ $(&quot;#share_doc_value&quot;).val(randomWord(false,4)); share_data['share_type'] = 1; share_data['share_value'] = $(&quot;#share_doc_value&quot;).val(); updateDocShare(share_data); }); // 评论组件 &lt;/script> &lt;!-- 调用浏览器打印功能 --> &lt;!-- 文档PDF生成 --> &lt;script src=&quot;/static/jspdf/jspdf.umd.min.js?version=1.5.2 charset=&quot;utf-8&quot;>&lt;/script> &lt;script src=&quot;/static/html2canvas/html2canvas.min.js?version=1.5.2 charset=&quot;utf-8&quot;>&lt;/script> &lt;script type=&quot;text/javascript&quot;> // 文档生成PDF function doc2pdf() { //将整个页面转成canvas html2canvas(document.getElementById(&quot;doc-content&quot;),{useCORS:true,logging:true}).then(canvas => { var contentWidth = canvas.width; var contentHeight = canvas.height; //一页pdf显示html页面生成的canvas高度; var pageHeight = contentWidth / 592.28 * 841.89; //未生成pdf的html页面高度 var leftHeight = contentHeight; //页面偏移 var position = 0; //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高 var imgWidth = 555.28; //左右边距20 var imgHeight = 555.28/contentWidth * contentHeight; //左右边距20 var pageData = canvas.toDataURL('image/jpeg', 1.0); var doc = new jspdf.jsPDF('', 'pt', 'a4'); //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89) //当内容未超过pdf一页显示的范围,无需分页 if (leftHeight &lt; pageHeight) { doc.addImage(pageData, 'JPEG', 20, 0, imgWidth, imgHeight ); //左右边距20 } else { while(leftHeight > 0) { doc.addImage(pageData, 'JPEG', 20, position, imgWidth, imgHeight) //左右边距20 leftHeight -= pageHeight; position -= 841.89; //避免添加空白页 if(leftHeight > 0) { doc.addPage(); } } }; doc.save('LNB换型事件标准内容.pdf'); }); }; $(&quot;#download-doc-pdf&quot;).click(function(){ layer.load(&quot;PDF生成中……&quot;) doc2pdf(); layer.closeAll(); $(&quot;#download_div&quot;).css(&quot;display&quot;,&quot;none&quot;); }) &lt;/script> &lt;script> $(&quot;#download-doc-docx&quot;).click(function(){ layer.load() $.ajax({ url:'/download_doc_docx/13859/', type:'post', success:function(r){ layer.closeAll() if(r.status){ var downloadLink = $('&lt;a>&lt;/a>') .attr('href', r.data) downloadLink[0].click(); downloadLink.remove(); }else{ layer.msg(r.data) } }, error:function(){ layer.closeAll() layer.msg(&quot;文档导出Docx文件请求异常&quot;) } }) }) &lt;/script> &lt;script> // 解析文档片段 parseFragment(); &lt;/script> &lt;!-- 在线表格文档根据窗口高度调整表格高度 --> &lt;!-- 文集作者或文档作者的JavaScript相关函数 --> &lt;script> // 文档顶部「新建」按钮的下拉菜单 dropdown.render({ elem: '#create-doc-btn', trigger: 'hover', data: [ { title: '文本文档', id: 'text' },{ title: '表格文档', id: 'table' },{ title: '超链接', id: 'link' },{ title:'OnlyOffice', id:'OnlyOffice', },{ title:'思维导图', id:'mindmap', } ], click: function(data, othis){ if(data.id == 'text'){ window.location.href = '/create_doc/?pid=' + pro_id }else if(data.id == 'table'){ window.location.href = '/create_doc/?pid=' + pro_id + '&eid=4' }else if(data.id == 'link'){ window.location.href = '/create_doc/?pid=' + pro_id + '&eid=5' }else if(data.id == 'OnlyOffice'){ window.location.href = '/onlyoffice/create?pid=' + pro_id }else if(data.id == 'mindmap'){ window.location.href = '/create_doc/?pid=' + pro_id + '&eid=9' } } }); // 侦听文集大纲滚动 // document.getElementById(&quot;doc-summary&quot;).addEventListener('scroll', function(){ // let t = $('.doc-summary').scrollTop(); // 目前监听的是整个body的滚动条距离 // let h = $('.doc-summary').height(); // 文集大纲的高度 // let a = document.getElementById(&quot;doc-search-input&quot;).offsetTop; // 搜索框至顶部的距离 // // console.log(&quot;滚动距离:&quot;,t,'div高度:',h,'顶部距离:',a) // if(t == 0){ // // console.log(&quot;在可视范围&quot;) // $('.project-search-div').removeClass('project-search-active-div') // }else{ // if (a >= t && a &lt; (t + h)) { // // // console.log(&quot;在可视范围&quot;) // $('.project-search-div').removeClass('project-search-active-div') // } // else{ // // console.log(&quot;不在可视范围&quot;) // $('.project-search-div').addClass('project-search-active-div') // } // } // }); // 高亮搜索词 setTimeout(function(){ keyLight('doc-content',getQueryVariable(&quot;highlight&quot;)); scrollIntoKey('doc-content',getQueryVariable(&quot;highlight&quot;)); },500) document.addEventListener('mouseup', function() { var selection = window.getSelection().toString(); let { x , y } = getSelectionEndPosition(); // console.log(x,y) if (selection) { var range = window.getSelection().getRangeAt(0); var button = document.createElement('button'); button.id = &quot;feedbackBtn&quot;; button.textContent = '我要反馈'; var div = document.createElement('div'); div.appendChild(button); div.style.position = 'absolute'; button.classList.add(&quot;layui-btn&quot;,&quot;layui-btn-normal&quot;,&quot;layui-btn-xs&quot;,&quot;layui-btn-radius&quot;) div.style.top = y + window.pageYOffset + 'px'; div.style.left = x + window.pageXOffset + 'px'; // div.style.top = range.getBoundingClientRect().top + 30 + window.pageYOffset + 'px'; // div.style.left = range.getBoundingClientRect().right + window.pageXOffset + 'px'; document.body.appendChild(div); // range.commonAncestorContainer.parentNode.appendChild(div); document.addEventListener('mousedown', function(event) { if (event.target === button) { feedbackDialog({'url':document.location.href,'content':selection.toString()}); } else if (!div.contains(event.target)) { div.remove(); } }); } }); feedbackDialog = function(value){ // console.log(value['url'],value['content']) window.open(&quot;/feedback/?source=&quot;+value['url']+'&content='+value['content']) }; function getSelectionEndPosition() { let x, y; let selection = window.getSelection(); if (selection.rangeCount > 0) { let range = selection.getRangeAt(0); let startNode = range.startContainer; let startOffset = range.startOffset; let endNode = range.endContainer; let endOffset = range.endOffset; let tempRange = document.createRange(); tempRange.setStart(endNode, endOffset); tempRange.collapse(true); let clientRects = tempRange.getClientRects(); if (clientRects.length > 0) { let lastRect = clientRects[clientRects.length - 1]; x = lastRect.right; y = lastRect.bottom; } } return { x, y }; }; &lt;/script> &lt;script> const docContainer = document.getElementById('doc-container'); const docSidebar = document.getElementById('doc-container-sidebar'); const docSplitter = document.getElementById('doc-container-splitter'); let isResizing = false; // 从 localStorage 获取上一次保存的宽度 const savedWidth = localStorage.getItem('sidebar-width'); if (savedWidth) { docContainer.style.setProperty('--sidebar-width', savedWidth); docSidebar.style.width = savedWidth; } docSplitter.addEventListener('mousedown', (e) => { isResizing = true; docSplitter.classList.add('active'); document.addEventListener('mousemove', handleMouseMove); document.addEventListener('mouseup', () => { isResizing = false; docSplitter.classList.remove('active'); document.removeEventListener('mousemove', handleMouseMove); }); }); function handleMouseMove(e) { if (isResizing) { const containerRect = docContainer.getBoundingClientRect(); const newSidebarWidth = e.clientX - containerRect.left; // 限制最大宽度 const maxWidth = 800; // 可以根据需要修改 if (newSidebarWidth &lt;= maxWidth) { // 保存当前宽度到 localStorage localStorage.setItem('sidebar-width', `${newSidebarWidth}px`); docContainer.style.setProperty('--sidebar-width', `${newSidebarWidth}px`); docSidebar.style.width = `${newSidebarWidth}px`; } } } &lt;/script> &lt;!-- 微信JS-SDK开始 --> &lt;!-- 微信JS-SDK结束 --> &lt;/body> &lt;/html> 用Python代码将上面的html格式内容转成json格式
11-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值