<a/>中href和onclick的区别

本文探讨了HTML中链接的onclick事件与href属性之间的交互作用。详细分析了如何通过返回false阻止默认行为,使用javascript:void(0)避免页面跳动,以及在不同场景下使用这两种属性时的注意事项。
<ol style="line-height: 1.4em; margin: 0px 0px 1.5em; font-size: 1em; padding: 0px;"><li style="margin: 0px 0px 0.25em 30px; font-size: 1em; padding: 0px;">[size=small;]链接的 <code style="font-family: 'courier new', courier, monospace; white-space: pre; font-size: 1em;">onclick</code> 事件被先执行,其次是 <code style="font-family: 'courier new', courier, monospace; white-space: pre; font-size: 1em;">href</code> 属性下的动作(页面跳转,或 javascript 伪链接);[/size]</li><li style="margin: 0px 0px 0.25em 30px; font-size: 1em; padding: 0px;">[size=small;]假设链接中同时存在 <code style="font-family: 'courier new', courier, monospace; white-space: pre; font-size: 1em;">href</code> 与 <code style="font-family: 'courier new', courier, monospace; white-space: pre; font-size: 1em;">onclick</code>,如果想让 <code style="font-family: 'courier new', courier, monospace; white-space: pre; font-size: 1em;">href</code> 属性下的动作不执行,<code style="font-family: 'courier new', courier, monospace; white-space: pre; font-size: 1em;">onclick</code> 必须得到一个 <code style="font-family: 'courier new', courier, monospace; white-space: pre; font-size: 1em;">false</code> 的返回值。[/size]</li><li style="margin: 0px 0px 0.25em 30px; font-size: 1em; padding: 0px;">[size=small;]如果页面过长有滚动条,且希望通过链接的 <code style="font-family: 'courier new', courier, monospace; white-space: pre; font-size: 1em;">onclick</code> 事件执行操作。应将它的 <code style="font-family: 'courier new', courier, monospace; white-space: pre; font-size: 1em;">href</code> 属性设为 <code style="font-family: 'courier new', courier, monospace; white-space: pre; font-size: 1em;">javascript:void(0);</code>,而不要是 <code style="font-family: 'courier new', courier, monospace; white-space: pre; font-size: 1em;">#</code>,这可以防止不必要的页面跳动;[/size]</li><li style="margin: 0px 0px 0.25em 30px; font-size: 1em; padding: 0px;">[size=small;]如果在链接的 <code style="font-family: 'courier new', courier, monospace; white-space: pre; font-size: 1em;">href</code> 属性中调用一个有返回值的函数,当前页面的内容将被此函数的返回值代替;[/size]</li><li style="margin: 0px 0px 0.25em 30px; font-size: 1em; padding: 0px;">[size=small;]在按住shift键的情况下会有所区别。[/size]</li><li style="margin: 0px 0px 0.25em 30px; font-size: 1em; padding: 0px;">[size=small;]今天我遇到的问题,在ie6.0里以href的形式访问不到parentnode。[/size]</li><li style="margin: 0px 0px 0.25em 30px; font-size: 1em; padding: 0px;">[size=small;]尽量不要用javascript:协议做为a的href属性,这样不仅会导致不必要的触发window.onbeforeunload事件,在ie里面更会使gif动画图片停止播放。[/size]</li><li style="margin: 0px 0px 0.25em 30px; font-size: 1em; padding: 0px;">[size=small;]<span style="color: #ff0000;">调用js时候对参数的处理方式不一致,href会将url编码的内容自动转码,例如%22将会转成",从而导致被"%22"出现js错误。[/size]</span></li></ol>
<html>	<head>		<script type="text/javascript">		<!--		function handler1(arg1){			alert(arg1);		}		-->		</script>	</head>	<body>		<table width="155">		<tr>			<td>			<div style="height:195;width:157px;overflow:auto;border:1px solid #999999;">			   <table width="155" border="0" cellspacing="0" cellpadding="0" id="datatable">				<tr>					<a onclick="javascript:handler1('%22%5b%40', 'y', 'n', 'sam report');">test</a>.				</tr>				<tr>					<a href="javascript:handler1('%22%5b%40', 'y', 'n', 'sam report');">test1</a>				</tr>				   </table>			</div>			</td>		</tr>		</table>	</body></html>
&lt;!DOCTYPE html&gt; &lt;html lang="zh-cn" style="font-size: 15px;"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;meta name=renderer content=webkit&gt; &lt;meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"&gt; &lt;meta http-equiv="Cache-Control" content="no-transform" /&gt; &lt;meta http-equiv="Cache-Control" content="no-siteapp" /&gt; &lt;meta http-equiv="Cache-Control" content="max-age=7200" /&gt; &lt;!-- &lt;meta name="referrer" content="no-referrer"&gt; --&gt; &lt;meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"&gt; &lt;meta name="keywords" content="LNB换型事件标准内容,IMES FA 相关文档,技术,架构,流程,知识,规范,标准化"/&gt; &lt;meta name="description" content="``` &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;root&gt; &lt;Header&gt; &lt;SystemName&gt;UpperSystem&lt;/SystemName" /&gt; &lt;!-- OGP分享协议开始 --&gt; &lt;meta property="og:type" content="website"&gt; &lt;meta property="og:title" content="LNB换型事件标准内容 - IMES FA 相关文档"&gt; &lt;meta property="og:description" content="``` &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;root&gt; &lt;Header&gt; &lt;SystemName&gt;UpperSystem&lt;/SystemName"&gt; &lt;meta property="og:url" content="http://kk.luxsan-ict.com/doc/13859/"&gt; &lt;link rel="icon" href="/static/search/mrdoc_logo_300.png" sizes="192x192" /&gt; &lt;meta property="og:image" content="http://kk.luxsan-ict.com/static/search/mrdoc_logo_300.png"&gt; &lt;!-- OGP分享协议结束 --&gt; &lt;title&gt;LNB换型事件标准内容 - IMES FA 相关文档 - 立臻IT知识库 &lt;/title&gt; &lt;link href="/static/PearAdminLayui/component/layui/css/layui.css?version=1.5.2" rel="stylesheet"&gt; &lt;link rel="stylesheet" href="/static/mr-marked/marked.css?version=1.5.2" /&gt; &lt;link href="/static/viewerjs/viewer.min.css?version=1.5.2" rel="stylesheet"&gt; &lt;link href="/static/mrdoc/mrdoc.css?version=1.5.2" rel="stylesheet"&gt; &lt;link href="/static/mrdoc/mrdoc-docs.css?version=1.5.2" rel="stylesheet"&gt; &lt;link href="/static/iconFont/iconfont.css?version=1.5.2" rel="stylesheet"&gt; &lt;style&gt; .markdown-code .markdown-code-block pre,.vditor-reset &gt; pre &gt; code.hljs{ max-height: max-content!important; } code[class*=language-], pre[class*=language-]{ white-space: pre-wrap !important; } :not(pre)&gt;code[class*=language-]{ white-space: inherit !important; } /* html{ filter: invert(1) hue-rotate(180deg); } */ &lt;/style&gt; &lt;!--[if lt IE 9]&gt; &lt;script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"&gt;&lt;/script&gt; &lt;script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"&gt;&lt;/script&gt; &lt;![endif]--&gt; &lt;/head&gt; &lt;body class="big-page"&gt; &lt;div id="doc-container"&gt; &lt;!-- 左侧目录栏 --&gt; &lt;div id="doc-container-sidebar" id="doc-summary"&gt; &lt;div&gt; &lt;!-- 左上角广告块 --&gt; &lt;!-- 广告代码开始 --&gt; &lt;!-- 广告代码结束 --&gt; &lt;!-- 文集名称 --&gt; &lt;div class="project-title"&gt; &lt;svg class="icon" aria-hidden="true"&gt;&lt;use xlink:href="#mrdoc-icon-pro-2"&gt;&lt;/use&gt;&lt;/svg&gt; &lt;a href="/project/129/" &gt;IMES FA 相关文档 &lt;/a&gt; &lt;i class="layui-icon layui-icon-star" style="cursor: pointer;" title="请登录后收藏"&gt;&lt;/i&gt; &lt;p&gt; &lt;/p&gt; &lt;/div&gt; &lt;!-- 文档搜索框 --&gt; &lt;form action="/project/129/" method="get" class="project-search-div" &gt; &lt;div id="doc-search-input"&gt; &lt;input type="text" name="kw" placeholder="在文集内搜索文档" value="" class="layui-input doc-search-input"&gt; &lt;button type="submit" style="position: absolute;top:15px;right: 20px;border: none;background-color: white;cursor:pointer"&gt; &lt;i class="layui-icon layui-icon-search"&gt;&lt;/i&gt; &lt;/button&gt; &lt;/div&gt; &lt;/form&gt; &lt;!-- &lt;hr&gt; --&gt; &lt;!-- 遍历文集大纲 --&gt; &lt;!-- 如果文集的文档数量超过999,使用异步加载文集目录 --&gt; &lt;!-- 文档数量小于999,使用同步加载文集目录 --&gt; &lt;nav&gt; &lt;ul class=""&gt; &lt;!-- 一级目录 --&gt; &lt;li class="doctree-li"&gt; &lt;div class="doctree-item-wrapper"&gt; &lt;span class="doctree-item-name-wrapper"&gt; &lt;i class="layui-icon layui-icon-right switch-toc"&gt;&lt;/i&gt&lt;a href="/doc/13858/" class="doc-link" data-id="13858" title="MLB IMES"&gt; MLB IMES &lt;/a&gt; &lt;/span&gt; &lt;/div&gt; &lt;div class="sub-items"&gt;&lt;ul class="doctree-ul"&gt; &lt;!-- 一级目录 --&gt; &lt;li class="doctree-li"&gt; &lt;div class="doctree-item-wrapper"&gt; &lt;span class="doctree-item-name-wrapper"&gt; &lt;a href="/doc/13859/" class="doc-link" data-id="13859" title="LNB换型事件标准内容"&gt; &lt;i class="iconfont mrdoc-icon-wendang"&gt;&lt;/i&gt;  LNB换型事件标准内容 &lt;/a&gt; &lt;/span&gt; &lt;/div&gt; &lt;/li&gt; &lt;li class="doctree-li"&gt; &lt;div class="doctree-item-wrapper"&gt; &lt;span class="doctree-item-name-wrapper"&gt; &lt;a href="/doc/13870/" class="doc-link" data-id="13870" title="LNB配置标准值"&gt; &lt;i class="iconfont mrdoc-icon-wendang"&gt;&lt;/i&gt;  LNB配置标准值 &lt;/a&gt; &lt;/span&gt; &lt;/div&gt; &lt;/li&gt; &lt;/ul&gt;&lt;/div&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/nav&gt; &lt;div class="bq"&gt; &lt;a href="javascript:void(0);" class="mrdoc-link"&gt;立臻IT知识库&lt;/a&gt; &lt;/div&gt; &lt;!-- 右下角广告块 --&gt; &lt;!-- 广告代码开始 --&gt; &lt;!-- 广告代码结束 --&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- 左侧目录栏结束 --&gt; &lt;div id="doc-container-splitter"&gt;&lt;/div&gt; &lt;button class="doc-container-sidebar-toggle" onclick="toggleSidebar()"&gt; &lt;svg class="doc-container-toggle-icon" viewBox="0 0 24 24" width="24" height="24"&gt; &lt;path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/&gt; &lt;/svg&gt; &lt;/button&gt; &lt;!-- 右侧文档栏 --&gt; &lt;div id="doc-container-body"&gt; &lt;!-- 文档导航 --&gt; &lt;div class="doc-header" role="navigation"&gt; &lt;a class="btn pull-left js-toolbar-action" aria-label="" href="javascript:void(0);" title="切换侧边栏"&gt; &lt;i class="layui-icon layui-icon-slider"&gt;&lt;/i&gt; &lt;/a&gt; &lt;a class="btn pull-left font-small layui-hide-xs" href="javascript:void(0);" title="缩小字体"&gt; &lt;i class="iconfont mrdoc-icon-font-size"&gt;-&lt;/i&gt; &lt;/a&gt; &lt;a class="btn pull-left font-large layui-hide-xs" href="javascript:void(0);" title="放大字体"&gt; &lt;i class="iconfont mrdoc-icon-font-size"&gt;+&lt;/i&gt; &lt;/a&gt; &lt;a class="btn pull-left font-switch layui-hide-xs" href="javascript:void(0);" title="切换字体类型"&gt; &lt;i class="iconfont mrdoc-icon-font-type"&gt;&lt;/i&gt; &lt;/a&gt; &lt;a class="btn pull-left theme-switch" href="javascript:void(0);" title="切换至夜间模式"&gt; &lt;i class="iconfont mrdoc-icon-night"&gt;&lt;/i&gt; &lt;/a&gt; &lt;!-- 顶部工具栏 --&gt; &lt;a class="btn pull-right" aria-label="" href="/"&gt; &lt;i class="layui-icon layui-icon-home"&gt;&lt;/i&gt; &lt;span class="layui-hide-xs"&gt;首页&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;!-- 文档主体 --&gt; &lt;div class="doc-body-content"&gt; &lt;div class="doc-body-content-div"&gt; &lt;!-- 文档内容 --&gt; &lt;div class="doc-content" id="doc-content"&gt; &lt;!-- 标题 --&gt; &lt;div class="doc-info"&gt; &lt;!-- 页面主体头信息 --&gt; &lt;h1&gt;LNB换型事件标准内容&lt;/h1&gt;&lt;hr&gt; &lt;!-- 广告代码开始 --&gt; &lt;!-- 广告代码结束 --&gt; &lt;/div&gt; &lt;!-- 标题结束 --&gt; &lt;!-- 正文开始 --&gt; &lt;div class="markdown-body" id="content"&gt; &lt;textarea style="display: none;"&gt;``` &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;root&gt; &lt;Header&gt; &lt;SystemName&gt;UpperSystem&lt;/SystemName&gt; &lt;SystemVersion&gt;1.00&lt;/SystemVersion&gt; &lt;SessionId&gt;6984&lt;/SessionId&gt; &lt;CommandName&gt;CHANGE-REQUEST&lt;/CommandName&gt; &lt;/Header&gt; &lt;CHANGE-REQUEST&gt; &lt;Index&gt; &lt;Element&gt; &lt;Date&gt;2025/10/26,22:40:04&lt;/Date&gt; &lt;MCNo&gt;8&lt;/MCNo&gt; &lt;Lane&gt;1&lt;/Lane&gt; &lt;LotName&gt;639-23039$AK0_T04A_2617&lt;/LotName&gt; &lt;Production&gt;7264&lt;/Production&gt; &lt;PlannedProduction&gt;0&lt;/PlannedProduction&gt; &lt;PassData&gt;0&lt;/PassData&gt; &lt;DataCount&gt;10&lt;/DataCount&gt; &lt;MountMode&gt;1&lt;/MountMode&gt; &lt;LaneMode&gt;1&lt;/LaneMode&gt; &lt;/Element&gt; &lt;/Index&gt; &lt;/CHANGE-REQUEST&gt; &lt;/root&gt; ```&lt;/textarea&gt; &lt;/div&gt; &lt;!-- 正文结束 --&gt; &lt;div class="markdown-body"&gt; &lt;!-- 文档附件 --&gt; &lt;/div&gt; &lt;hr&gt; &lt;/div&gt; &lt;!-- 分享栏 --&gt; &lt;div id="doc-content-bottom-toolbar" style="color: rgba(0,0,0,.65);padding-bottom: 10px;margin-top: 10px;"&gt; &lt;div class="layui-row" style="margin-bottom: 10px;padding-left: 20px;"&gt; &lt;/div&gt; &lt;div class="layui-row layui-col-space20" style="padding-left: 20px;"&gt; &lt;span class="doc-bottom-icon"&gt; &lt;i class="layui-icon layui-icon-user"&gt;&lt;/i&gt; 宋恒林(K17082150) &lt;/span&gt; &lt;span tooltip="更新于:2025年11月4日 11:50" class="doc-bottom-icon"&gt; &lt;i class="layui-icon layui-icon-log"&gt;&lt;/i&gt; 2025年11月4日 11:50 &lt;/span&gt; &lt;button id="share" class="doc-bottom-btn" tooltip="转发本文档"&gt; &lt;i class="layui-icon layui-icon-share" &gt;&lt;/i&gt; 转发文档 &lt;/button&gt; &lt;span class="doc-bottom-icon"&gt; &lt;i class="layui-icon layui-icon-star" title="请登录后收藏"&gt;&lt;/i&gt; 收藏文档 &lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- 广告代码开始 --&gt; &lt;!-- 广告代码结束 --&gt; &lt;div class="layui-row page-flip" style="margin-top: 10px;padding:10px;display:flex;justify-content:space-around;"&gt; &lt;!-- &lt;hr&gt; --&gt; &lt;div&gt; &lt;a href="/doc/13858/" class="layui-btn layui-btn-primary layui-btn-sm layui-btn-radius"&gt;&lt;i class="layui-icon layui-icon-prev "&gt;&lt;/i&gt;上一篇&lt;/a&gt; &lt;/div&gt; &lt;div&gt; &lt;a href="/doc/13870/" class="layui-btn layui-btn-primary layui-btn-sm layui-btn-radius"&gt;下一篇&lt;i class="layui-icon layui-icon-next"&gt;&lt;/i&gt;&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- 文档目录 --&gt; &lt;div id="toc-container" class='sidebar doc-toc-hide'&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- 右侧文档栏结束 --&gt; &lt;/div&gt; &lt;!-- 右下角工具按钮 --&gt; &lt;div class="fixed-tool-bar"&gt; &lt;div class="toTop" &gt;&lt;i class="layui-icon layui-icon-up"&gt;&lt;/i&gt;&lt;/div&gt; &lt;a class="tocMenu" href="/feedback/?source=/doc/13859/" target="_blank" title="反馈问题"&gt;&lt;i class="layui-icon layui-icon-help"&gt;&lt;/i&gt;&lt;/a&gt; &lt;!-- 修改文档 --&gt; &lt;!-- 目录 --&gt; &lt;div class="tocMenu" style="display: none;"&gt;&lt;i class="iconfont mrdoc-icon-toc"&gt;&lt;/i&gt;&lt;/div&gt; &lt;!-- 分享按钮 --&gt; &lt;/div&gt; &lt;!-- 转发选项卡模板 --&gt; &lt;div id="share_div" style="display: none;"&gt; &lt;div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief"&gt; &lt;ul class="layui-tab-title"&gt; &lt;li class="layui-this"&gt;手机扫码&lt;/li&gt; &lt;li&gt;复制链接&lt;/li&gt; &lt;/ul&gt; &lt;div class="layui-tab-content" style="height: 100px;"&gt; &lt;div class="layui-tab-item layui-show" align='center'&gt; &lt;p style="font-weight: 700;margin-bottom: 10px;"&gt;手机扫一扫转发分享&lt;/p&gt; &lt;div id="url_qrcode"&gt;&lt;/div&gt; &lt;/div&gt; &lt;div class="layui-tab-item mrdoc-margin-1" align='center'&gt; &lt;input type="text" id="copy_crt_url" name="current_url" class="layui-input" /&gt;&lt;br&gt; &lt;button class="layui-btn layui-btn-xs" title="复制链接到粘贴板" style="background-color: #333;" id="copy_doc_url""&gt;复制链接&lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;script src="/jsi18n/"&gt;&lt;/script&gt; &lt;script src="/static/jquery/3.5.0/jquery.min.js"&gt;&lt;/script&gt; &lt;script src="/static/PearAdminLayui/component/layui/layui.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script src="/static/viewerjs/viewer.min.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script src="/static/qrcodejs/qrcode.min.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script src="/static/darkmode-js/darkmode-js.min.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script src="/static/markjs/mark.min.js?version=1.5.2" charset="UTF-8"&gt;&lt;/script&gt; &lt;script&gt; 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&gt; &lt;script src="/static/mrdoc/mrdoc-docs.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script src="/static/iconFont/iconfont.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script&gt; 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 + "//" + window.location.host copyToClipboard(`${baseURL}/doc/${elem.data('id')}/`) break; default: break; } } }); }; &lt;/script&gt; &lt;script src="/static/mr-marked/marked.min.js?version=1.5.2"&gt;&lt;/script&gt; &lt;!-- 文档评论相关js --&gt; &lt;!-- 动态添加广告代码 --&gt; &lt;div id="ad-1"&gt; &lt;/div&gt; &lt;div id="ad-2"&gt; &lt;/div&gt; &lt;div id="ad-3"&gt; &lt;/div&gt; &lt;div id="ad-4"&gt; &lt;/div&gt; &lt;script&gt; $("#ad-1").appendTo($("#ad-code-1")); $("#ad-2").appendTo($("#ad-code-2")); $("#ad-3").appendTo($("#ad-code-3")); $("#ad-4").appendTo($("#ad-code-4")); &lt;/script&gt; &lt;!-- 广告代码结束 --&gt; &lt;!-- 统计代码开始 --&gt; &lt;!-- 统计代码结束 --&gt; &lt;!-- 解析渲染Markdown --&gt; &lt;script&gt; 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&gt; &lt;!-- 下载选项卡模板 --&gt; &lt;div id="download_div" style="display: none;"&gt; &lt;div class="layui-row" style="margin: 10px;"&gt; &lt;a class="layui-btn layui-btn-primary layui-btn-sm" download='LNB换型事件标准内容.md' href="/download_doc_md/13859/" target="_blank"&gt; Markdown文件 &lt;/a&gt; &lt;button class="layui-btn layui-btn-primary layui-btn-sm" href="/download_doc_docx/13859/" id="download-doc-docx"&gt; Word文件 &lt;/button&gt; &lt;button class="layui-btn layui-btn-primary layui-btn-sm" id="download-doc-pdf"&gt; PDF文档 &lt;/button&gt; &lt;a href="?print=true" target="_blank" class="layui-btn layui-btn-primary layui-btn-sm" &gt;PDF文档(打印)&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- 分享文档选项卡模板 --&gt; &lt;div id="share_doc_div" style="display: none;margin:10px;"&gt; &lt;div class="layui-tab-content"&gt; &lt;div class="layui-form layui-form-pane" lay-filter="show-share-form"&gt; &lt;div class="layui-form-item"&gt; &lt;label class="layui-form-label"&gt;分享&lt;/label&gt; &lt;div class="layui-input-block"&gt; &lt;input type="checkbox" name="switch" lay-skin="switch" lay-text="开启|关闭" lay-filter="share-switch" &gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="layui-form" style="display: none;" id="share-link"&gt; &lt;div class="layui-form-item"&gt; &lt;label class="layui-form-label"&gt;链接&lt;/label&gt; &lt;div class="layui-input-block" id='copy_link'&gt; &lt;input type="text" name="share_link" class="layui-input" id="share_link" readonly&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="layui-form-item" style="display:none;" id="share-type"&gt; &lt;label class="layui-form-label"&gt;类型&lt;/label&gt; &lt;div class="layui-input-block"&gt; &lt;input type="radio" name="share_type" value="0" title="公开" checked lay-filter="share_type"&gt; &lt;input type="radio" name="share_type" value="1" title="私密" lay-filter="share_type"&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="layui-form" style="display:none;" id="share_value_item"&gt; &lt;div class="layui-form-item"&gt; &lt;label class="layui-form-label"&gt;密码&lt;/label&gt; &lt;div class="layui-input-inline"&gt; &lt;input type="text" name="share_value" value='' disabled class="layui-input" id="share_doc_value"&gt; &lt;/div&gt; &lt;div class="layui-form-mid layui-word-aux"&gt; &lt;button class="layui-btn layui-btn-xs layui-btn-primary" id="updateShareValue"&gt;&lt;i class="layui-icon layui-icon-refresh"&gt;&lt;/i&gt; 更新密码&lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="layui-form-item" style="display:none;" id="share-expire"&gt; &lt;label class="layui-form-label"&gt;有效期&lt;/label&gt; &lt;div class="layui-input-block"&gt; &lt;input type="radio" name="expire_type" value="-1" title="永久" checked lay-filter="expire_type"&gt; &lt;input type="radio" name="expire_type" value="3" title="3天" lay-filter="expire_type"&gt; &lt;input type="radio" name="expire_type" value="7" title="7天" lay-filter="expire_type"&gt; &lt;input type="radio" name="expire_type" value="15" title="15天" lay-filter="expire_type"&gt; &lt;input type="radio" name="expire_type" value="0" title="自定义" lay-filter="expire_type"&gt; &lt;div class="layui-input-inline" id="expire_date_item" style="display: none;"&gt; &lt;input type="text" class="layui-input" name="expire_date" id="expire_date" value="" autocomplete="off"&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;script src="/static/toc/doctoc.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script src="/static/clipboard/clipboard.min.js"&gt;&lt;/script&gt; &lt;script&gt; var layer = layui.layer; var form = layui.form; var laydate = layui.laydate; var doc_editor_mode = '1'; // Ajax默认配置 $.ajaxSetup({ data: {csrfmiddlewaretoken: 'FYiG9BvZxlszgMJHivQ94WymudTPAWw8wrFI75LcqJDTMGzZqTw1jexUzwRvAb0B' }, headers: {"X-CSRFToken":'FYiG9BvZxlszgMJHivQ94WymudTPAWw8wrFI75LcqJDTMGzZqTw1jexUzwRvAb0B'}, }); // 非小屏默认展开文档目录 if(window.innerWidth &gt; 1650){ $(".sidebar").toggleClass("doc-toc-hide"); } // 切换文档目录显示与否 $(".tocMenu").click(function() { // console.log("切换文档目录显示") $(".sidebar").toggleClass("doc-toc-hide"); }); //修改a标签链接新窗口打开 // $('#content').on('click','a',function(e){ // e.target.target = '_blank'; // }); // 显示文档下载弹出框 $("#download_doc").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 = "", 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:"/share_doc/", method:'post', data:data, success:function(r){ if(r.status){ layer.msg("设置成功",{offset: 't'}) // console.log(r.data) $("input[name=share_link]").val(document.location.protocol + '//' + document.location.host + '/share_doc/?token=' + r.data.doc) }else{ layer.msg("设置出错") } }, error:function(){ layer.msg("文档分享异常") } }) } // 分享文档 $("#shareDoc").click(function(){ layer.open({ type:1, title:'分享文档:LNB换型事件标准内容', content:$("#share_doc_div"), area:'450px', success : function(index, layero) { // 成功弹出后回调 form.render(); }, cannel: function(){ $("#share_doc_div").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("show-share-form"); if(share_val['share_type'] == 0){ return share_val['share_link'] }else{ let share_link = share_val['share_link'] + "&pwd=" + share_val['share_value'] return share_link } } }); copy_share_link.on('success', function(e) { layer.msg("复制成功!") }); //监听分享框分享类型的单选事件 form.on('radio(share_type)', function(data){ // console.log(data.value); //被点击的radio的value值 if(data.value == 0){ // 公开 $("#share_value_item").css("display","none"); share_data['share_type'] = 0; share_data['share_value'] = $("#share_doc_value").val(); updateDocShare(share_data); }else if(data.value == 1){ // 私密 $("#share_value_item").css("display","block"); // console.log("初始化密码") $("#share_doc_value").val(randomWord(false,4)) share_data['share_type'] = 1; share_data['share_value'] = $("#share_doc_value").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){ // 自定义日期 $("#expire_date_item").css("display","block"); layer.msg("请选择日期") share_data['expire_date'] = $("#expire_date").val(); // updateDocShare(share_data); }else{ $("#expire_date_item").css("display","none"); updateDocShare(share_data); } }); // 监听分享开关事件 form.on('switch(share-switch)', function(data){ console.log(data.elem.checked); //开关是否开启,true或者false if(data.elem.checked){ // 开启 // console.log("开启分享") $("#share-type").css('display',"block"); $("#share-expire").css('display',"block"); $("#share-link").css("display","block"); if($("input[name='share_type']:checked").val() == 1){ $("#share_value_item").css("display","block"); } // 开启 share_data['is_enable'] = true updateDocShare(share_data); }else{ // console.log("关闭分享") layer.msg("关闭分享",{offset: 't'}) $("#share-type").css('display',"none") $("#share-expire").css('display',"none") $("#share_value_item").css("display","none"); $("#share-link").css("display","none"); share_data['is_enable'] = false updateDocShare(share_data); } }); // 更新文档分享密码 $("#updateShareValue").click(function(){ $("#share_doc_value").val(randomWord(false,4)); share_data['share_type'] = 1; share_data['share_value'] = $("#share_doc_value").val(); updateDocShare(share_data); }); // 评论组件 &lt;/script&gt; &lt;!-- 调用浏览器打印功能 --&gt; &lt;!-- 文档PDF生成 --&gt; &lt;script src="/static/jspdf/jspdf.umd.min.js?version=1.5.2 charset="utf-8"&gt;&lt;/script&gt; &lt;script src="/static/html2canvas/html2canvas.min.js?version=1.5.2 charset="utf-8"&gt;&lt;/script&gt; &lt;script type="text/javascript"&gt; // 文档生成PDF function doc2pdf() { //将整个页面转成canvas html2canvas(document.getElementById("doc-content"),{useCORS:true,logging:true}).then(canvas =&gt; { 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 &gt; 0) { doc.addImage(pageData, 'JPEG', 20, position, imgWidth, imgHeight) //左右边距20 leftHeight -= pageHeight; position -= 841.89; //避免添加空白页 if(leftHeight &gt; 0) { doc.addPage(); } } }; doc.save('LNB换型事件标准内容.pdf'); }); }; $("#download-doc-pdf").click(function(){ layer.load("PDF生成中……") doc2pdf(); layer.closeAll(); $("#download_div").css("display","none"); }) &lt;/script&gt; &lt;script&gt; $("#download-doc-docx").click(function(){ layer.load() $.ajax({ url:'/download_doc_docx/13859/', type:'post', success:function(r){ layer.closeAll() if(r.status){ var downloadLink = $('&lt;a&gt;&lt;/a&gt;') .attr('href', r.data) downloadLink[0].click(); downloadLink.remove(); }else{ layer.msg(r.data) } }, error:function(){ layer.closeAll() layer.msg("文档导出Docx文件请求异常") } }) }) &lt;/script&gt; &lt;script&gt; // 解析文档片段 parseFragment(); &lt;/script&gt; &lt;!-- 在线表格文档根据窗口高度调整表格高度 --&gt; &lt;!-- 文集作者或文档作者的JavaScript相关函数 --&gt; &lt;script&gt; // 文档顶部「新建」按钮的下拉菜单 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("doc-summary").addEventListener('scroll', function(){ // let t = $('.doc-summary').scrollTop(); // 目前监听的是整个body的滚动条距离 // let h = $('.doc-summary').height(); // 文集大纲的高度 // let a = document.getElementById("doc-search-input").offsetTop; // 搜索框至顶部的距离 // // console.log("滚动距离:",t,'div高度:',h,'顶部距离:',a) // if(t == 0){ // // console.log("在可视范围") // $('.project-search-div').removeClass('project-search-active-div') // }else{ // if (a &gt;= t && a &lt; (t + h)) { // // // console.log("在可视范围") // $('.project-search-div').removeClass('project-search-active-div') // } // else{ // // console.log("不在可视范围") // $('.project-search-div').addClass('project-search-active-div') // } // } // }); // 高亮搜索词 setTimeout(function(){ keyLight('doc-content',getQueryVariable("highlight")); scrollIntoKey('doc-content',getQueryVariable("highlight")); },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 = "feedbackBtn"; button.textContent = '我要反馈'; var div = document.createElement('div'); div.appendChild(button); div.style.position = 'absolute'; button.classList.add("layui-btn","layui-btn-normal","layui-btn-xs","layui-btn-radius") 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("/feedback/?source="+value['url']+'&content='+value['content']) }; function getSelectionEndPosition() { let x, y; let selection = window.getSelection(); if (selection.rangeCount &gt; 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 &gt; 0) { let lastRect = clientRects[clientRects.length - 1]; x = lastRect.right; y = lastRect.bottom; } } return { x, y }; }; &lt;/script&gt; &lt;script&gt; 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) =&gt; { isResizing = true; docSplitter.classList.add('active'); document.addEventListener('mousemove', handleMouseMove); document.addEventListener('mouseup', () =&gt; { 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&gt; &lt;!-- 微信JS-SDK开始 --&gt; &lt;!-- 微信JS-SDK结束 --&gt; &lt;/body&gt; &lt;/html&gt; 用Python代码将上面的html格式内容转成json格式
11-05
D:\environment\anaconda3\envs\oracle\python.exe E:\Project\AIProject_2025\Agent\workorderAgent\compare_document.py html_content--&gt; &lt;!-- 继承自模板:app_doc/docs_base.html --&gt; &lt;!DOCTYPE html&gt; &lt;html lang="zh-cn" style="font-size: 15px;"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;meta name=renderer content=webkit&gt; &lt;meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"&gt; &lt;meta http-equiv="Cache-Control" content="no-transform" /&gt; &lt;meta http-equiv="Cache-Control" content="no-siteapp" /&gt; &lt;meta http-equiv="Cache-Control" content="max-age=7200" /&gt; &lt;!-- &lt;meta name="referrer" content="no-referrer"&gt; --&gt; &lt;meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"&gt; &lt;meta name="keywords" content="LNB换型事件标准内容,IMES FA 相关文档,技术,架构,流程,知识,规范,标准化"/&gt; &lt;meta name="description" content="``` &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;root&gt; &lt;Header&gt; &lt;SystemName&gt;UpperSystem&lt;/SystemName" /&gt; &lt;!-- OGP分享协议开始 --&gt; &lt;meta property="og:type" content="website"&gt; &lt;meta property="og:title" content="LNB换型事件标准内容 - IMES FA 相关文档"&gt; &lt;meta property="og:description" content="``` &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;root&gt; &lt;Header&gt; &lt;SystemName&gt;UpperSystem&lt;/SystemName"&gt; &lt;meta property="og:url" content="http://kk.luxsan-ict.com/doc/13859/"&gt; &lt;link rel="icon" href="/static/search/mrdoc_logo_300.png" sizes="192x192" /&gt; &lt;meta property="og:image" content="http://kk.luxsan-ict.com/static/search/mrdoc_logo_300.png"&gt; &lt;!-- OGP分享协议结束 --&gt; &lt;title&gt;LNB换型事件标准内容 - IMES FA 相关文档 - 立臻IT知识库 &lt;/title&gt; &lt;link href="/static/PearAdminLayui/component/layui/css/layui.css?version=1.5.2" rel="stylesheet"&gt; &lt;link rel="stylesheet" href="/static/mr-marked/marked.css?version=1.5.2" /&gt; &lt;link href="/static/viewerjs/viewer.min.css?version=1.5.2" rel="stylesheet"&gt; &lt;link href="/static/mrdoc/mrdoc.css?version=1.5.2" rel="stylesheet"&gt; &lt;link href="/static/mrdoc/mrdoc-docs.css?version=1.5.2" rel="stylesheet"&gt; &lt;link href="/static/iconFont/iconfont.css?version=1.5.2" rel="stylesheet"&gt; &lt;style&gt; .markdown-code .markdown-code-block pre,.vditor-reset &gt; pre &gt; code.hljs{ max-height: max-content!important; } code[class*=language-], pre[class*=language-]{ white-space: pre-wrap !important; } :not(pre)&gt;code[class*=language-]{ white-space: inherit !important; } /* html{ filter: invert(1) hue-rotate(180deg); } */ &lt;/style&gt; &lt;!--[if lt IE 9]&gt; &lt;script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"&gt;&lt;/script&gt; &lt;script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"&gt;&lt;/script&gt; &lt;![endif]--&gt; &lt;/head&gt; &lt;body class="big-page"&gt; &lt;div id="doc-container"&gt; &lt;!-- 左侧目录栏 --&gt; &lt;div id="doc-container-sidebar" id="doc-summary"&gt; &lt;div&gt; &lt;!-- 左上角广告块 --&gt; &lt;!-- 广告代码开始 --&gt; &lt;!-- 广告代码结束 --&gt; &lt;!-- 文集名称 --&gt; &lt;div class="project-title"&gt; &lt;svg class="icon" aria-hidden="true"&gt;&lt;use xlink:href="#mrdoc-icon-pro-2"&gt;&lt;/use&gt;&lt;/svg&gt; &lt;a href="/project/129/" &gt;IMES FA 相关文档 &lt;/a&gt; &lt;i class="layui-icon layui-icon-star" style="cursor: pointer;" title="请登录后收藏"&gt;&lt;/i&gt; &lt;p&gt; &lt;/p&gt; &lt;/div&gt; &lt;!-- 文档搜索框 --&gt; &lt;form action="/project/129/" method="get" class="project-search-div" &gt; &lt;div id="doc-search-input"&gt; &lt;input type="text" name="kw" placeholder="在文集内搜索文档" value="" class="layui-input doc-search-input"&gt; &lt;button type="submit" style="position: absolute;top:15px;right: 20px;border: none;background-color: white;cursor:pointer"&gt; &lt;i class="layui-icon layui-icon-search"&gt;&lt;/i&gt; &lt;/button&gt; &lt;/div&gt; &lt;/form&gt; &lt;!-- &lt;hr&gt; --&gt; &lt;!-- 遍历文集大纲 --&gt; &lt;!-- 如果文集的文档数量超过999,使用异步加载文集目录 --&gt; &lt;!-- 文档数量小于999,使用同步加载文集目录 --&gt; &lt;nav&gt; &lt;ul class=""&gt; &lt;!-- 一级目录 --&gt; &lt;li class="doctree-li"&gt; &lt;div class="doctree-item-wrapper"&gt; &lt;span class="doctree-item-name-wrapper"&gt; &lt;i class="layui-icon layui-icon-right switch-toc"&gt;&lt;/i&gt&lt;a href="/doc/13858/" class="doc-link" data-id="13858" title="MLB IMES"&gt; MLB IMES &lt;/a&gt; &lt;/span&gt; &lt;/div&gt; &lt;div class="sub-items"&gt;&lt;ul class="doctree-ul"&gt; &lt;!-- 一级目录 --&gt; &lt;li class="doctree-li"&gt; &lt;div class="doctree-item-wrapper"&gt; &lt;span class="doctree-item-name-wrapper"&gt; &lt;a href="/doc/13859/" class="doc-link" data-id="13859" title="LNB换型事件标准内容"&gt; &lt;i class="iconfont mrdoc-icon-wendang"&gt;&lt;/i&gt;  LNB换型事件标准内容 &lt;/a&gt; &lt;/span&gt; &lt;/div&gt; &lt;/li&gt; &lt;li class="doctree-li"&gt; &lt;div class="doctree-item-wrapper"&gt; &lt;span class="doctree-item-name-wrapper"&gt; &lt;a href="/doc/13870/" class="doc-link" data-id="13870" title="LNB配置标准值"&gt; &lt;i class="iconfont mrdoc-icon-wendang"&gt;&lt;/i&gt;  LNB配置标准值 &lt;/a&gt; &lt;/span&gt; &lt;/div&gt; &lt;/li&gt; &lt;/ul&gt;&lt;/div&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/nav&gt; &lt;div class="bq"&gt; &lt;a href="javascript:void(0);" class="mrdoc-link"&gt;立臻IT知识库&lt;/a&gt; &lt;/div&gt; &lt;!-- 右下角广告块 --&gt; &lt;!-- 广告代码开始 --&gt; &lt;!-- 广告代码结束 --&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- 左侧目录栏结束 --&gt; &lt;div id="doc-container-splitter"&gt;&lt;/div&gt; &lt;button class="doc-container-sidebar-toggle" onclick="toggleSidebar()"&gt; &lt;svg class="doc-container-toggle-icon" viewBox="0 0 24 24" width="24" height="24"&gt; &lt;path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/&gt; &lt;/svg&gt; &lt;/button&gt; &lt;!-- 右侧文档栏 --&gt; &lt;div id="doc-container-body"&gt; &lt;!-- 文档导航 --&gt; &lt;div class="doc-header" role="navigation"&gt; &lt;a class="btn pull-left js-toolbar-action" aria-label="" href="javascript:void(0);" title="切换侧边栏"&gt; &lt;i class="layui-icon layui-icon-slider"&gt;&lt;/i&gt; &lt;/a&gt; &lt;a class="btn pull-left font-small layui-hide-xs" href="javascript:void(0);" title="缩小字体"&gt; &lt;i class="iconfont mrdoc-icon-font-size"&gt;-&lt;/i&gt; &lt;/a&gt; &lt;a class="btn pull-left font-large layui-hide-xs" href="javascript:void(0);" title="放大字体"&gt; &lt;i class="iconfont mrdoc-icon-font-size"&gt;+&lt;/i&gt; &lt;/a&gt; &lt;a class="btn pull-left font-switch layui-hide-xs" href="javascript:void(0);" title="切换字体类型"&gt; &lt;i class="iconfont mrdoc-icon-font-type"&gt;&lt;/i&gt; &lt;/a&gt; &lt;a class="btn pull-left theme-switch" href="javascript:void(0);" title="切换至夜间模式"&gt; &lt;i class="iconfont mrdoc-icon-night"&gt;&lt;/i&gt; &lt;/a&gt; &lt;!-- 顶部工具栏 --&gt; &lt;a class="btn pull-right" aria-label="" href="/"&gt; &lt;i class="layui-icon layui-icon-home"&gt;&lt;/i&gt; &lt;span class="layui-hide-xs"&gt;首页&lt;/span&gt; &lt;/a&gt; &lt;/div&gt; &lt;!-- 文档主体 --&gt; &lt;div class="doc-body-content"&gt; &lt;div class="doc-body-content-div"&gt; &lt;!-- 文档内容 --&gt; &lt;div class="doc-content" id="doc-content"&gt; &lt;!-- 标题 --&gt; &lt;div class="doc-info"&gt; &lt;!-- 页面主体头信息 --&gt; &lt;h1&gt;LNB换型事件标准内容&lt;/h1&gt;&lt;hr&gt; &lt;!-- 广告代码开始 --&gt; &lt;!-- 广告代码结束 --&gt; &lt;/div&gt; &lt;!-- 标题结束 --&gt; &lt;!-- 正文开始 --&gt; &lt;div class="markdown-body" id="content"&gt; &lt;textarea style="display: none;"&gt;``` &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;root&gt; &lt;Header&gt; &lt;SystemName&gt;UpperSystem&lt;/SystemName&gt; &lt;SystemVersion&gt;1.00&lt;/SystemVersion&gt; &lt;SessionId&gt;6984&lt;/SessionId&gt; &lt;CommandName&gt;CHANGE-REQUEST&lt;/CommandName&gt; &lt;/Header&gt; &lt;CHANGE-REQUEST&gt; &lt;Index&gt; &lt;Element&gt; &lt;Date&gt;2025/10/26,22:40:04&lt;/Date&gt; &lt;MCNo&gt;8&lt;/MCNo&gt; &lt;Lane&gt;1&lt;/Lane&gt; &lt;LotName&gt;639-23039$AK0_T04A_2617&lt;/LotName&gt; &lt;Production&gt;7264&lt;/Production&gt; &lt;PlannedProduction&gt;0&lt;/PlannedProduction&gt; &lt;PassData&gt;0&lt;/PassData&gt; &lt;DataCount&gt;10&lt;/DataCount&gt; &lt;MountMode&gt;1&lt;/MountMode&gt; &lt;LaneMode&gt;1&lt;/LaneMode&gt; &lt;/Element&gt; &lt;/Index&gt; &lt;/CHANGE-REQUEST&gt; &lt;/root&gt; ```&lt;/textarea&gt; &lt;/div&gt; &lt;!-- 正文结束 --&gt; &lt;div class="markdown-body"&gt; &lt;!-- 文档附件 --&gt; &lt;/div&gt; &lt;hr&gt; &lt;/div&gt; &lt;!-- 分享栏 --&gt; &lt;div id="doc-content-bottom-toolbar" style="color: rgba(0,0,0,.65);padding-bottom: 10px;margin-top: 10px;"&gt; &lt;div class="layui-row" style="margin-bottom: 10px;padding-left: 20px;"&gt; &lt;/div&gt; &lt;div class="layui-row layui-col-space20" style="padding-left: 20px;"&gt; &lt;span class="doc-bottom-icon"&gt; &lt;i class="layui-icon layui-icon-user"&gt;&lt;/i&gt; 宋恒林(K17082150) &lt;/span&gt; &lt;span tooltip="更新于:2025年11月4日 11:50" class="doc-bottom-icon"&gt; &lt;i class="layui-icon layui-icon-log"&gt;&lt;/i&gt; 2025年11月4日 11:50 &lt;/span&gt; &lt;button id="share" class="doc-bottom-btn" tooltip="转发本文档"&gt; &lt;i class="layui-icon layui-icon-share" &gt;&lt;/i&gt; 转发文档 &lt;/button&gt; &lt;span class="doc-bottom-icon"&gt; &lt;i class="layui-icon layui-icon-star" title="请登录后收藏"&gt;&lt;/i&gt; 收藏文档 &lt;/span&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- 广告代码开始 --&gt; &lt;!-- 广告代码结束 --&gt; &lt;div class="layui-row page-flip" style="margin-top: 10px;padding:10px;display:flex;justify-content:space-around;"&gt; &lt;!-- &lt;hr&gt; --&gt; &lt;div&gt; &lt;a href="/doc/13858/" class="layui-btn layui-btn-primary layui-btn-sm layui-btn-radius"&gt;&lt;i class="layui-icon layui-icon-prev "&gt;&lt;/i&gt;上一篇&lt;/a&gt; &lt;/div&gt; &lt;div&gt; &lt;a href="/doc/13870/" class="layui-btn layui-btn-primary layui-btn-sm layui-btn-radius"&gt;下一篇&lt;i class="layui-icon layui-icon-next"&gt;&lt;/i&gt;&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- 文档目录 --&gt; &lt;div id="toc-container" class='sidebar doc-toc-hide'&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- 右侧文档栏结束 --&gt; &lt;/div&gt; &lt;!-- 右下角工具按钮 --&gt; &lt;div class="fixed-tool-bar"&gt; &lt;div class="toTop" &gt;&lt;i class="layui-icon layui-icon-up"&gt;&lt;/i&gt;&lt;/div&gt; &lt;a class="tocMenu" href="/feedback/?source=/doc/13859/" target="_blank" title="反馈问题"&gt;&lt;i class="layui-icon layui-icon-help"&gt;&lt;/i&gt;&lt;/a&gt; &lt;!-- 修改文档 --&gt; &lt;!-- 目录 --&gt; &lt;div class="tocMenu" style="display: none;"&gt;&lt;i class="iconfont mrdoc-icon-toc"&gt;&lt;/i&gt;&lt;/div&gt; &lt;!-- 分享按钮 --&gt; &lt;/div&gt; &lt;!-- 转发选项卡模板 --&gt; &lt;div id="share_div" style="display: none;"&gt; &lt;div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief"&gt; &lt;ul class="layui-tab-title"&gt; &lt;li class="layui-this"&gt;手机扫码&lt;/li&gt; &lt;li&gt;复制链接&lt;/li&gt; &lt;/ul&gt; &lt;div class="layui-tab-content" style="height: 100px;"&gt; &lt;div class="layui-tab-item layui-show" align='center'&gt; &lt;p style="font-weight: 700;margin-bottom: 10px;"&gt;手机扫一扫转发分享&lt;/p&gt; &lt;div id="url_qrcode"&gt;&lt;/div&gt; &lt;/div&gt; &lt;div class="layui-tab-item mrdoc-margin-1" align='center'&gt; &lt;input type="text" id="copy_crt_url" name="current_url" class="layui-input" /&gt;&lt;br&gt; &lt;button class="layui-btn layui-btn-xs" title="复制链接到粘贴板" style="background-color: #333;" id="copy_doc_url""&gt;复制链接&lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;script src="/jsi18n/"&gt;&lt;/script&gt; &lt;script src="/static/jquery/3.5.0/jquery.min.js"&gt;&lt;/script&gt; &lt;script src="/static/PearAdminLayui/component/layui/layui.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script src="/static/viewerjs/viewer.min.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script src="/static/qrcodejs/qrcode.min.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script src="/static/darkmode-js/darkmode-js.min.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script src="/static/markjs/mark.min.js?version=1.5.2" charset="UTF-8"&gt;&lt;/script&gt; &lt;script&gt; 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&gt; &lt;script src="/static/mrdoc/mrdoc-docs.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script src="/static/iconFont/iconfont.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script&gt; 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 + "//" + window.location.host copyToClipboard(`${baseURL}/doc/${elem.data('id')}/`) break; default: break; } } }); }; &lt;/script&gt; &lt;script src="/static/mr-marked/marked.min.js?version=1.5.2"&gt;&lt;/script&gt; &lt;!-- 文档评论相关js --&gt; &lt;!-- 动态添加广告代码 --&gt; &lt;div id="ad-1"&gt; &lt;/div&gt; &lt;div id="ad-2"&gt; &lt;/div&gt; &lt;div id="ad-3"&gt; &lt;/div&gt; &lt;div id="ad-4"&gt; &lt;/div&gt; &lt;script&gt; $("#ad-1").appendTo($("#ad-code-1")); $("#ad-2").appendTo($("#ad-code-2")); $("#ad-3").appendTo($("#ad-code-3")); $("#ad-4").appendTo($("#ad-code-4")); &lt;/script&gt; &lt;!-- 广告代码结束 --&gt; &lt;!-- 统计代码开始 --&gt; &lt;!-- 统计代码结束 --&gt; &lt;!-- 解析渲染Markdown --&gt; &lt;script&gt; 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&gt; &lt;!-- 下载选项卡模板 --&gt; &lt;div id="download_div" style="display: none;"&gt; &lt;div class="layui-row" style="margin: 10px;"&gt; &lt;a class="layui-btn layui-btn-primary layui-btn-sm" download='LNB换型事件标准内容.md' href="/download_doc_md/13859/" target="_blank"&gt; Markdown文件 &lt;/a&gt; &lt;button class="layui-btn layui-btn-primary layui-btn-sm" href="/download_doc_docx/13859/" id="download-doc-docx"&gt; Word文件 &lt;/button&gt; &lt;button class="layui-btn layui-btn-primary layui-btn-sm" id="download-doc-pdf"&gt; PDF文档 &lt;/button&gt; &lt;a href="?print=true" target="_blank" class="layui-btn layui-btn-primary layui-btn-sm" &gt;PDF文档(打印)&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; &lt;!-- 分享文档选项卡模板 --&gt; &lt;div id="share_doc_div" style="display: none;margin:10px;"&gt; &lt;div class="layui-tab-content"&gt; &lt;div class="layui-form layui-form-pane" lay-filter="show-share-form"&gt; &lt;div class="layui-form-item"&gt; &lt;label class="layui-form-label"&gt;分享&lt;/label&gt; &lt;div class="layui-input-block"&gt; &lt;input type="checkbox" name="switch" lay-skin="switch" lay-text="开启|关闭" lay-filter="share-switch" &gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="layui-form" style="display: none;" id="share-link"&gt; &lt;div class="layui-form-item"&gt; &lt;label class="layui-form-label"&gt;链接&lt;/label&gt; &lt;div class="layui-input-block" id='copy_link'&gt; &lt;input type="text" name="share_link" class="layui-input" id="share_link" readonly&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="layui-form-item" style="display:none;" id="share-type"&gt; &lt;label class="layui-form-label"&gt;类型&lt;/label&gt; &lt;div class="layui-input-block"&gt; &lt;input type="radio" name="share_type" value="0" title="公开" checked lay-filter="share_type"&gt; &lt;input type="radio" name="share_type" value="1" title="私密" lay-filter="share_type"&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="layui-form" style="display:none;" id="share_value_item"&gt; &lt;div class="layui-form-item"&gt; &lt;label class="layui-form-label"&gt;密码&lt;/label&gt; &lt;div class="layui-input-inline"&gt; &lt;input type="text" name="share_value" value='' disabled class="layui-input" id="share_doc_value"&gt; &lt;/div&gt; &lt;div class="layui-form-mid layui-word-aux"&gt; &lt;button class="layui-btn layui-btn-xs layui-btn-primary" id="updateShareValue"&gt;&lt;i class="layui-icon layui-icon-refresh"&gt;&lt;/i&gt; 更新密码&lt;/button&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="layui-form-item" style="display:none;" id="share-expire"&gt; &lt;label class="layui-form-label"&gt;有效期&lt;/label&gt; &lt;div class="layui-input-block"&gt; &lt;input type="radio" name="expire_type" value="-1" title="永久" checked lay-filter="expire_type"&gt; &lt;input type="radio" name="expire_type" value="3" title="3天" lay-filter="expire_type"&gt; &lt;input type="radio" name="expire_type" value="7" title="7天" lay-filter="expire_type"&gt; &lt;input type="radio" name="expire_type" value="15" title="15天" lay-filter="expire_type"&gt; &lt;input type="radio" name="expire_type" value="0" title="自定义" lay-filter="expire_type"&gt; &lt;div class="layui-input-inline" id="expire_date_item" style="display: none;"&gt; &lt;input type="text" class="layui-input" name="expire_date" id="expire_date" value="" autocomplete="off"&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;script src="/static/toc/doctoc.js?version=1.5.2"&gt;&lt;/script&gt; &lt;script src="/static/clipboard/clipboard.min.js"&gt;&lt;/script&gt; &lt;script&gt; var layer = layui.layer; var form = layui.form; var laydate = layui.laydate; var doc_editor_mode = '1'; // Ajax默认配置 $.ajaxSetup({ data: {csrfmiddlewaretoken: '9hHLbYlxdkYf55nfUhSKj3dAUzQCuVI1VzCbKwPfwCiTOcYqXo4NiKkf4UQfuYMw' }, headers: {"X-CSRFToken":'9hHLbYlxdkYf55nfUhSKj3dAUzQCuVI1VzCbKwPfwCiTOcYqXo4NiKkf4UQfuYMw'}, }); // 非小屏默认展开文档目录 if(window.innerWidth &gt; 1650){ $(".sidebar").toggleClass("doc-toc-hide"); } // 切换文档目录显示与否 $(".tocMenu").click(function() { // console.log("切换文档目录显示") $(".sidebar").toggleClass("doc-toc-hide"); }); //修改a标签链接新窗口打开 // $('#content').on('click','a',function(e){ // e.target.target = '_blank'; // }); // 显示文档下载弹出框 $("#download_doc").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 = "", 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:"/share_doc/", method:'post', data:data, success:function(r){ if(r.status){ layer.msg("设置成功",{offset: 't'}) // console.log(r.data) $("input[name=share_link]").val(document.location.protocol + '//' + document.location.host + '/share_doc/?token=' + r.data.doc) }else{ layer.msg("设置出错") } }, error:function(){ layer.msg("文档分享异常") } }) } // 分享文档 $("#shareDoc").click(function(){ layer.open({ type:1, title:'分享文档:LNB换型事件标准内容', content:$("#share_doc_div"), area:'450px', success : function(index, layero) { // 成功弹出后回调 form.render(); }, cannel: function(){ $("#share_doc_div").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("show-share-form"); if(share_val['share_type'] == 0){ return share_val['share_link'] }else{ let share_link = share_val['share_link'] + "&pwd=" + share_val['share_value'] return share_link } } }); copy_share_link.on('success', function(e) { layer.msg("复制成功!") }); //监听分享框分享类型的单选事件 form.on('radio(share_type)', function(data){ // console.log(data.value); //被点击的radio的value值 if(data.value == 0){ // 公开 $("#share_value_item").css("display","none"); share_data['share_type'] = 0; share_data['share_value'] = $("#share_doc_value").val(); updateDocShare(share_data); }else if(data.value == 1){ // 私密 $("#share_value_item").css("display","block"); // console.log("初始化密码") $("#share_doc_value").val(randomWord(false,4)) share_data['share_type'] = 1; share_data['share_value'] = $("#share_doc_value").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){ // 自定义日期 $("#expire_date_item").css("display","block"); layer.msg("请选择日期") share_data['expire_date'] = $("#expire_date").val(); // updateDocShare(share_data); }else{ $("#expire_date_item").css("display","none"); updateDocShare(share_data); } }); // 监听分享开关事件 form.on('switch(share-switch)', function(data){ console.log(data.elem.checked); //开关是否开启,true或者false if(data.elem.checked){ // 开启 // console.log("开启分享") $("#share-type").css('display',"block"); $("#share-expire").css('display',"block"); $("#share-link").css("display","block"); if($("input[name='share_type']:checked").val() == 1){ $("#share_value_item").css("display","block"); } // 开启 share_data['is_enable'] = true updateDocShare(share_data); }else{ // console.log("关闭分享") layer.msg("关闭分享",{offset: 't'}) $("#share-type").css('display',"none") $("#share-expire").css('display',"none") $("#share_value_item").css("display","none"); $("#share-link").css("display","none"); share_data['is_enable'] = false updateDocShare(share_data); } }); // 更新文档分享密码 $("#updateShareValue").click(function(){ $("#share_doc_value").val(randomWord(false,4)); share_data['share_type'] = 1; share_data['share_value'] = $("#share_doc_value").val(); updateDocShare(share_data); }); // 评论组件 &lt;/script&gt; &lt;!-- 调用浏览器打印功能 --&gt; &lt;!-- 文档PDF生成 --&gt; &lt;script src="/static/jspdf/jspdf.umd.min.js?version=1.5.2 charset="utf-8"&gt;&lt;/script&gt; &lt;script src="/static/html2canvas/html2canvas.min.js?version=1.5.2 charset="utf-8"&gt;&lt;/script&gt; &lt;script type="text/javascript"&gt; // 文档生成PDF function doc2pdf() { //将整个页面转成canvas html2canvas(document.getElementById("doc-content"),{useCORS:true,logging:true}).then(canvas =&gt; { 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 &gt; 0) { doc.addImage(pageData, 'JPEG', 20, position, imgWidth, imgHeight) //左右边距20 leftHeight -= pageHeight; position -= 841.89; //避免添加空白页 if(leftHeight &gt; 0) { doc.addPage(); } } }; doc.save('LNB换型事件标准内容.pdf'); }); }; $("#download-doc-pdf").click(function(){ layer.load("PDF生成中……") doc2pdf(); layer.closeAll(); $("#download_div").css("display","none"); }) &lt;/script&gt; &lt;script&gt; $("#download-doc-docx").click(function(){ layer.load() $.ajax({ url:'/download_doc_docx/13859/', type:'post', success:function(r){ layer.closeAll() if(r.status){ var downloadLink = $('&lt;a&gt;&lt;/a&gt;') .attr('href', r.data) downloadLink[0].click(); downloadLink.remove(); }else{ layer.msg(r.data) } }, error:function(){ layer.closeAll() layer.msg("文档导出Docx文件请求异常") } }) }) &lt;/script&gt; &lt;script&gt; // 解析文档片段 parseFragment(); &lt;/script&gt; &lt;!-- 在线表格文档根据窗口高度调整表格高度 --&gt; &lt;!-- 文集作者或文档作者的JavaScript相关函数 --&gt; &lt;script&gt; // 文档顶部「新建」按钮的下拉菜单 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("doc-summary").addEventListener('scroll', function(){ // let t = $('.doc-summary').scrollTop(); // 目前监听的是整个body的滚动条距离 // let h = $('.doc-summary').height(); // 文集大纲的高度 // let a = document.getElementById("doc-search-input").offsetTop; // 搜索框至顶部的距离 // // console.log("滚动距离:",t,'div高度:',h,'顶部距离:',a) // if(t == 0){ // // console.log("在可视范围") // $('.project-search-div').removeClass('project-search-active-div') // }else{ // if (a &gt;= t && a &lt; (t + h)) { // // // console.log("在可视范围") // $('.project-search-div').removeClass('project-search-active-div') // } // else{ // // console.log("不在可视范围") // $('.project-search-div').addClass('project-search-active-div') // } // } // }); // 高亮搜索词 setTimeout(function(){ keyLight('doc-content',getQueryVariable("highlight")); scrollIntoKey('doc-content',getQueryVariable("highlight")); },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 = "feedbackBtn"; button.textContent = '我要反馈'; var div = document.createElement('div'); div.appendChild(button); div.style.position = 'absolute'; button.classList.add("layui-btn","layui-btn-normal","layui-btn-xs","layui-btn-radius") 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("/feedback/?source="+value['url']+'&content='+value['content']) }; function getSelectionEndPosition() { let x, y; let selection = window.getSelection(); if (selection.rangeCount &gt; 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 &gt; 0) { let lastRect = clientRects[clientRects.length - 1]; x = lastRect.right; y = lastRect.bottom; } } return { x, y }; }; &lt;/script&gt; &lt;script&gt; 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) =&gt; { isResizing = true; docSplitter.classList.add('active'); document.addEventListener('mousemove', handleMouseMove); document.addEventListener('mouseup', () =&gt; { 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&gt; &lt;!-- 微信JS-SDK开始 --&gt; &lt;!-- 微信JS-SDK结束 --&gt; &lt;/body&gt; &lt;/html&gt; Process finished with exit code 0 将上面的html格式转成json格式,写Python代码获取
11-05
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值