|
- <!DOCTYPE html>
- <html lang="zh-CN">
-
- <head>
- <meta charset="UTF-8">
- <title>操作书签</title>
- <style type="text/css">
- .content {
- font-size: 15px;
- color: darkslategray;
- margin: 5px;
- }
-
- .content_red {
- font-weight: bold;
- color: red;
- }
-
- .li {
- cursor: pointer;
- color: blueviolet;
- margin: 10px;
- }
-
- .def_control {
- height: 100%;
- width: 100%;
- font-size: 18px;
- }
-
- .btn_box {
- float: left;
- line-height: 3.3em;
- margin-left: 2%;
- }
- </style>
- </head>
-
- <body onload="bookMarkList()">
- <script type="text/javascript" src='js/main.js'></script>
- <div class="content">这是一个网页,按f12可以打开调试器</div>
- <div class="content">书签列表如下:</div>
- <div id="bookMarkDiv">
-
- </div>
- <div id="repleaseBookMarkDiv" class="content">
- <div class="content">选择的书签是:</div>
- <div class="content_red" id="selectBookMarkId"></div>
- <div class="content">替换的内容是:</div>
- <div class="content">
- <textarea id="repleaseBookMarkContent" style="margin: 0px; width: 220px; height: 90px;"></textarea></div>
- <div class="btn_box">
- <button class="def_control" type="button" id="repleaseBookMarkButton"
- onclick="repleaseBookMarkClick()">书签内容替换</button>
- </div>
- <div class="btn_box">
- <button class="def_control" type="button" id="insertLocalFileButton"
- onclick="insertLocalFileClick()">本地文件替换已选择书签</button>
- </div>
- </div>
- </body>
-
- </html>
-
- <script>
- wps.ApiEvent.AddApiEventListener("WindowActivate", onDocActiveChange) //当前文档切换后的事件回调通知
-
- //当前文档切换到其它文档时,重新获取新的文档的书签列表
- function onDocActiveChange(doc, docwin){
- bookMarkList()
- clearSelectionBookmark()
- }
- //获取文档中的书签列表并定义列表项的点击事件
- function bookMarkList(){
- let doc = wps.WpsApplication().ActiveDocument
- if (!doc)
- return
-
- document.getElementById('bookMarkDiv').innerHTML = ""
- let innerHtml = ""
- let bookMarkCount = doc.Bookmarks.Count
- for (let i = 1; i <= bookMarkCount; ++i) {
- let bookMakrItem = doc.Bookmarks.Item(i)
- let bookMarkName = bookMakrItem.Name
- innerHtml = innerHtml + "<li class='li' onclick=\"bookMarkClick('" + bookMarkName + "')\">" + bookMarkName +
- "</li>"
- }
-
- document.getElementById('bookMarkDiv').innerHTML = innerHtml
- }
- //书签列表项的点击事件
- function bookMarkClick(bookMarkName) {
- let doc = wps.WpsApplication().ActiveDocument
- document.getElementById('selectBookMarkId').innerHTML = bookMarkName
- if (!doc)
- return
- let bookMark = doc.Bookmarks.Item(bookMarkName)
- if (bookMark)
- bookMark.Range.Select()
- }
- //书签内容替换按钮点击事件
- function repleaseBookMarkClick() {
- getPositionInsert('text')
- }
- //本地文件替换已选择书签点击事件
- function insertLocalFileClick() {
- getPositionInsert('file')
- }
- //定位到选择的书签位置的最末,插入文本内容或本地文件
- function getPositionInsert(textOrFile) {
- let doc = wps.WpsApplication().ActiveDocument
- let bookMarks = doc.Bookmarks
- let selectBookMarkId = document.getElementById("selectBookMarkId").innerHTML
- let textareaStr = document.getElementById("repleaseBookMarkContent").value
- if (!doc)
- return
- if (selectBookMarkId.length == 0) {
- alert('请选择需要替换的书签')
- return
- } else {
- let bookMarkItem = bookMarks.Item(selectBookMarkId)
- if (bookMarkItem) {
- let bookMarkName = bookMarkItem.Name
- let bookMarkRange = bookMarkItem.Range
- if (textOrFile == 'text') {
- bookMarkRange.Text = textareaStr
- bookMarkRange.Select() //内容替换后不会刷新,让wps作一次刷新,这可能是wps的bug
- } else {
- OpenLocalFile()
- }
- //检测一下bookmark是不是失效了
- if (!bookMarks.Item(bookMarkName)){
- bookMarks.Add(bookMarkName, bookMarkRange)
- }
- bookMarkList() //执行完内容替换后刷新任务窗格的书签列表
- }
- }
- }
- //清空选择的书签
- function clearSelectionBookmark(){
- document.getElementById('selectBookMarkId').innerHTML = ''
- }
- </script>
|