js 冻结表格行列

原文:https://blog.csdn.net/wdd304159787/article/details/84922234

   function freezeTable(table, freezeRowNum, freezeColumnNum, width, height) {
        width = document.body.clientWidth - document.body.clientWidth * 0.05;
        height= 400;

        if (typeof (freezeRowNum) == 'string')
            freezeRowNum = parseInt(freezeRowNum)

        if (typeof (freezeColumnNum) == 'string')
            freezeColumnNum = parseInt(freezeColumnNum)

        var tableId;
        if (typeof (table) == 'string') {
            tableId = table;
            table = $('#' + tableId);
        } else
            tableId = table.attr('id');

        var divTableLayout = $("#" + tableId + "_tableLayout");

        if (divTableLayout.length != 0) {
            divTableLayout.before(table);
            divTableLayout.empty();
        } else {
            table.after("<div id='" + tableId + "_tableLayout' style='overflow:hidden;height:" + height + "px; width:" + width + "px;'></div>");

            divTableLayout = $("#" + tableId + "_tableLayout");
        }

        var html = '';
        if (freezeRowNum > 0 && freezeColumnNum > 0)
            html += '<div id="' + tableId + '_tableFix" style="padding: 0px;"></div>';

        if (freezeRowNum > 0)
            html += '<div id="' + tableId + '_tableHead" style="padding: 0px;"></div>';

        if (freezeColumnNum > 0)
            html += '<div id="' + tableId + '_tableColumn" style="padding: 0px;"></div>';

        html += '<div id="' + tableId + '_tableData" style="padding: 0px;"></div>';


        $(html).appendTo("#" + tableId + "_tableLayout");

        var divTableFix = freezeRowNum > 0 && freezeColumnNum > 0 ? $("#" + tableId + "_tableFix") : null;
        var divTableHead = freezeRowNum > 0 ? $("#" + tableId + "_tableHead") : null;
        var divTableColumn = freezeColumnNum > 0 ? $("#" + tableId + "_tableColumn") : null;
        var divTableData = $("#" + tableId + "_tableData");

        divTableData.append(table);

        if (divTableFix != null) {
            var tableFixClone = table.clone(true);
            tableFixClone.attr("id", tableId + "_tableFixClone");
            divTableFix.append(tableFixClone);
        }

        if (divTableHead != null) {
            var tableHeadClone = table.clone(true);
            tableHeadClone.attr("id", tableId + "_tableHeadClone");
            divTableHead.append(tableHeadClone);
        }

        if (divTableColumn != null) {
            var tableColumnClone = table.clone(true);
            tableColumnClone.attr("id", tableId + "_tableColumnClone");
            divTableColumn.append(tableColumnClone);
        }

        $("#" + tableId + "_tableLayout table").css("margin", "0");

        if (freezeRowNum > 0) {
            var HeadHeight = 0;
            var ignoreRowNum = 0;
            $("#" + tableId + "_tableHead tr:lt(" + freezeRowNum + ")").each(function () {
                if (ignoreRowNum > 0)
                    ignoreRowNum--;
                else {
                    var td = $(this).find('td:first, th:first');
                    HeadHeight += td.outerHeight(true);

                    ignoreRowNum = td.attr('rowSpan');
                    if (typeof (ignoreRowNum) == 'undefined')
                        ignoreRowNum = 0;
                    else
                        ignoreRowNum = parseInt(ignoreRowNum) - 1;
                }
            });
            //HeadHeight += 2;
            HeadHeight = HeadHeight - 8;
            divTableHead.css("height", HeadHeight);
            divTableFix != null && divTableFix.css("height", HeadHeight);
        }

        if (freezeColumnNum > 0) {
            var ColumnsWidth = 0;
            var ColumnsNumber = 0;
            $("#" + tableId + "_tableColumn tr:eq(" + freezeRowNum + ")").find("td:lt(" + freezeColumnNum + "), th:lt(" + freezeColumnNum + ")").each(function () {
                if (ColumnsNumber >= freezeColumnNum)
                    return;

                ColumnsWidth += $(this).outerWidth(true);

                ColumnsNumber += $(this).attr('colSpan') ? parseInt($(this).attr('colSpan')) : 1;
            });
            ColumnsWidth += 2;

            divTableColumn.css("width", ColumnsWidth);
            divTableFix != null && divTableFix.css("width", ColumnsWidth);
        }

        divTableData.scroll(function () {
            divTableHead != null && divTableHead.scrollLeft(divTableData.scrollLeft());

            divTableColumn != null && divTableColumn.scrollTop(divTableData.scrollTop());
        });

        divTableFix != null && divTableFix.css({ "overflow": "hidden", "position": "absolute", "z-index": "50" });
        divTableHead != null && divTableHead.css({ "overflow": "hidden", "width": width - 17, "position": "absolute", "z-index": "45" });
        divTableColumn != null && divTableColumn.css({ "overflow": "hidden", "height": height - 17, "position": "absolute", "z-index": "40" });
        divTableData.css({ "overflow": "scroll", "width": width, "height": height, "position": "absolute" });

        divTableFix != null && divTableFix.offset(divTableLayout.offset());
        divTableHead != null && divTableHead.offset(divTableLayout.offset());
        divTableColumn != null && divTableColumn.offset(divTableLayout.offset());
        divTableData.offset(divTableLayout.offset());
    }

    /* 
     * 调整锁定表的宽度和高度,这个函数在resize事件中调用 
     *  
     * 参数定义 
     *  table - 要锁定的表格元素或者表格ID 
     *  width - 表格的滚动区域宽度 
     *  height - 表格的滚动区域高度 
     */
    function adjustTableSize(table, width, height) {
        var tableId;
        if (typeof (table) == 'string')
            tableId = table;
        else
            tableId = table.attr('id');

        $("#" + tableId + "_tableLayout").width(width).height(height);
        $("#" + tableId + "_tableHead").width(width - 17);
        $("#" + tableId + "_tableColumn").height(height - 17);
        $("#" + tableId + "_tableData").width(width).height(height);
    }

    function pageHeight() {
        //if ($.browser.msie) {
        //    return document.compatMode == "CSS1Compat" ? document.documentElement.clientHeight : document.body.clientHeight;
        //} else {
            return self.innerHeight;
        //}
    };

    //返回当前页面宽度  
    function pageWidth() {
        //if ($.browser.msie) {
        //    return document.compatMode == "CSS1Compat" ? document.documentElement.clientWidth : document.body.clientWidth;
        //} else {
            return self.innerWidth;
        //}
    };

    //function initData_loaded() {
    //    $("table").each(function (x, obj) {
    //        var table = $(obj);
    //        var tableId = table.attr('id');
    //        var freezeRowNum = table.attr('freezerownum');
    //        var freezeColumnNum = table.attr('freezecolumnnum');

    //        debugger;
    //        if (typeof (freezeRowNum) != 'undefined' || typeof (freezeColumnNum) != 'undefined') {
    //            freezeTable(table, freezeRowNum || 0, freezeColumnNum || 0, pageWidth(), 400);      //pageHeight()

    //            var flag = false;
    //            $(window).resize(function () {
    //                if (flag)
    //                    return;

    //                setTimeout(function () {
    //                    adjustTableSize(tableId, pageWidth(), pageHeight());
    //                    flag = false;
    //                }, 100);

    //                flag = true;
    //            });
    //        }
    //    });
    //}

Javascript控制用户最多复制x个字

代码如下,把下面的500换成想要控制多少字节即可:

 document.addEventListener("copy", copy);
        function copy(e) {
            e = window.event || e;
            var clipboardData = e.clipboardData || window.clipboardData;
            if (!clipboardData) {
                return;
            }
            var text = window.getSelection().toString();
            if (text && text.length > 500) {
                e.preventDefault();
                clipboardData.setData("text/plain", text.substring(0, 500));
            }

 

深信服云桌面aDesk 备份挂载共享提示“请确认共享目录是否可访问,权限是否满足”

排查步骤:

1、用其他电脑访问对应的地址查看是否可以访问,是否可以ping通share服务器的ip,是否可以telnet通445

2、检查共享设备是否启用SMB功能,下图群晖设置(windows直接共享的略过)

3、检查SMB是否支持1.0,群晖等nas默认2.0-3.0(高级设置里将最小SMB协议改为1)。然后去aDesk尝试关联共享即可。

 

Dynu配置DDNS服务,可设置动态IP的免费域名

参考:https://zhujiget.com/4460.html、https://docs.anyhk.net/anyhk-nat/ddns/ddns-dynu

1、访问:https://www.dynu.com/zh-CN/(需国外访问)

2、使用“选择一”自带的域名,自行输入一个前缀,跳转到配置页面按照下图操作,最终保存。

3、连接需要做监听的服务器ssh,输入如下命令测试是否可以成功修改。(需先安装curl)

##安装curl:
##Debian/Ubuntu
apt-get update
apt-get install curl -y
​
##CentOS
yum update -y
yum install curl -y

执行如下代码:

curl "https://api.dynu.com/nic/update?hostname=申请的域名&password=账户密码或IP密码"

4、执行如上代码返回ok…或nochn,回到dynu的配置页面刷新看一下ip是否已经变动了,若为最新ip就没问题了。

5、ssh执行“crontab -e”,在文本中按“i”插入如下代码(每一分钟刷新一次ip),写入完毕按esc,然后输入:wq,回车。

*/1 * * * * curl "https://api.dynu.com/nic/update?hostname=申请的域名&password=账户密码或IP密码" >/dev/null 2>&1 &

6*、如果执行curl返回失败,或在国内使用此服务,请把“api.dynu.com”改为“162.216.241.241”,且curl需增加-k参数,否则会返回51错误。

curl -k "https://162.216.241.241/nic/update?hostname=申请的域名&password=账户密码或IP密码"

crontab -e:
*/1 * * * * curl -k "https://162.216.241.241/nic/update?hostname=申请的域名&password=账户密码或IP密码" >/dev/null 2>&1 &

 

HTML 选择文件夹上传文件

就是在末尾加一个webkitdirectory参数即可,但需要注意之后这个控件就只能选择文件夹。再需要单文件上传的话需要另外再建一个标签。

input type="file" name="uploadfile" autocomplete="off" style="float:left;" webkitdirectory