找回密码
 立即注册

QQ登录

只需一步,快速开始

遇到难题求助

注册会员

6

主题

15

帖子

57

积分

注册会员

积分
57
遇到难题求助
注册会员   /  发表于:2022-1-14 10:14  /   查看:2353  /  回复:8
本帖最后由 Derrick.Jiao 于 2022-5-9 14:57 编辑

js是14.1,ui是11。在spreadjs工具栏条件功能上下角标,但最近出现问题了,不确定是升级了14.1导致的还是什么?点击上下角标按钮,无法获取到鼠标选中的内容,window.getSelection() 获取不到选中的值。麻烦看下,,角标函数内容:function cornermark(cornermark) {    var cornermarkstart = "<" + cornermark + ">";
    var cornermarkend = "</" + cornermark + ">";
    var userSelection;
    if (window.getSelection) {//一般浏览器
        userSelection = window.getSelection();
    } else if (document.selection) {//IE浏览器、Opera
        userSelection = document.selection.createRange();
    }
    var userSelectionx = userSelection.toString();
    // 整个文本
    var text = userSelection.anchorNode.data;
    // 起点
    var anchor = userSelection.anchorOffset;
    // 终点
    var focus = userSelection.focusOffset;//extentOffset
    var length = text.length;
    if (anchor > focus) {
        anchor += focus;
        focus = anchor - focus;
        anchor -= focus;
    }
    if (anchor == focus || length == (focus - anchor)) {
        designer.MessageBox.show("请选择部分内容!", "提示", 2); /* 第三个参数控制弹窗显示图标:1提示  2警告 3错误 */
        return;
    }
    var s1 = text.substring(0, anchor);
    var s2 = text.substring(anchor, focus);
    var s3 = text.substring(focus, length);
    var ss = s1 + cornermarkstart + s2 + cornermarkend + s3;

    var spread = designer.wrapper.spread;
    var activeSheet = spread.getActiveSheet();
    var rowindex = activeSheet.getActiveRowIndex();
    var columnindex = activeSheet.getActiveColumnIndex();
    userSelection.anchorNode.replaceData(anchor, focus - anchor, cornermarkstart + s2 + cornermarkend);
    activeSheet.suspendPaint();
    activeSheet.setValue(rowindex, columnindex, userSelection.anchorNode.parentElement.innerText);
    activeSheet.resumePaint();
    activeSheet.suspendPaint();
    var cell = activeSheet.getCell(rowindex, columnindex);
    cell.cellType(new HTMLCellType());//指定是上下标单元格
    activeSheet.resumePaint();
    // 判断如果添加上标,则将高度设置为25
    var tempHeight = activeSheet.getRowHeight(rowindex, GC.Spread.Sheets.SheetArea.viewport);
    var tempValue = cell.text();
    if (cornermark === 'sub' || tempValue.indexOf('sub') !== -1) {
        if (tempHeight < 28) activeSheet.setRowHeight(rowindex, 28);
    } else {
        activeSheet.autoFitRow(rowindex);
    }
}


image.png163237303.png

8 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-5-9 14:57:00
推荐
你好,请参考附件的demo,配合事件实现。

online1.html

2.29 KB, 下载次数: 80

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-1-14 11:58:21
沙发
你好,我这边测了一下,这个问题在14.1之后的版本确认获取不到部分内容。而在14.1之前是可以获取到的。
由于上面提供的代码不完整,请在附件的代码中移除desinger的逻辑并且完善该demo提供给我们做进一步调研。

online1.html

4.45 KB, 下载次数: 86

回复 使用道具 举报
遇到难题求助
注册会员   /  发表于:2022-1-14 14:07:15
板凳
Derrick.Jiao 发表于 2022-1-14 11:58
你好,我这边测了一下,这个问题在14.1之后的版本确认获取不到部分内容。而在14.1之前是可以获取到的。
由 ...

我的要求并不高,我只要获取到正确的选中数值就行,其余内容我这边都是正常的。

online1.zip

924 Bytes, 下载次数: 90

回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-1-14 15:43:36
地板
遇到难题求助 发表于 2022-1-14 14:07
我的要求并不高,我只要获取到正确的选中数值就行,其余内容我这边都是正常的。

问题已收到,这边已提交调研,有进展会在本帖更新。这边测试在14.0.10是正确的,建议先将版本降级至14.0.10,有新的进展后再做升级。(SJS-11704)
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-2-15 09:42:39
5#
更新进展:
问题仍在调研中,待有进展会第一时间在贴中更新
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-3-15 10:19:19
6#
您好,该问题目前已经查到原因,内部结构进行了调整导致,原因较为复杂,还需要一些时间评估修复影响,请耐心等待。
回复 使用道具 举报
whalefall
注册会员   /  发表于:2022-8-10 16:27:57
8#
Clark.Pan 发表于 2022-3-15 10:19
您好,该问题目前已经查到原因,内部结构进行了调整导致,原因较为复杂,还需要一些时间评估修复影响,请耐 ...

请问该问题修复了吗
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-8-10 18:34:07
9#
whalefall 发表于 2022-8-10 16:27
请问该问题修复了吗

该问题最后经过确认,定性为产品限制,暂无修复计划。可以参考一楼的思路实现。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部