Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Templates automatically replace escape problems #4014

Open
xiaobai-6011 opened this issue Jul 14, 2024 · 1 comment
Open

Templates automatically replace escape problems #4014

xiaobai-6011 opened this issue Jul 14, 2024 · 1 comment

Comments

@xiaobai-6011
Copy link

The object tag I used in the outer layer nested the subpages, but when I rendered the <script < symbol was automatically replaced with \x3C, which I found by accident, but the tag I used in the page would sometimes be replaced and sometimes not, so that the page of my program was directly white screen, I wanted to solve this problem, I tried to put js into the template. But this way it doesn't replace

`{{define "UserManage/UserList.html"}}
{{template "header/bodytop.html" }}

<style> tbody tr:hover { background-color: rgb(245, 247, 250) !important; } .toggle-item::before { content: '\\25B6'; display: inline-block; margin-right: 5px; } .toggle-item.expanded::before { content: '\\25BC'; } </style>
用户名:
用户状态:
        <div uk-margin>
            <button type="button" class="uk-button uk-button-small uk-button-primary" id="search">搜索</button>
            <button type="button" class="uk-button uk-button-small uk-button-danger" id="resetText">重置</button>
        </div>
    </div>

</div>

<div id="off-push" uk-offcanvas="mode:push;overlay: true;flip: true;">
    <div class="uk-offcanvas-bar">
        <button type="button" class="uk-offcanvas-close" uk-close></button>
        <div class="uk-h3">编辑角色</div>
        <div class="uk-margin">
            <label>用户ID</label>
            <div class="uk-form-controls">
                <input id="userid" type="text" class="uk-input" disabled>
            </div>
        </div>
        <div class="uk-margin">
            <label>用户名</label>
            <div class="uk-form-controls">
                <input id="username" type="text" class="uk-input"/>
            </div>
        </div>
        <div class="uk-margin">
            <label>密码</label>
            <div class="uk-form-controls">
                <input id="userpassword" type="text" class="uk-input"/>
            </div>
        </div>
        <div class="uk-margin">
            <label>年龄</label>
            <div class="uk-form-controls">
                <input id="userage" type="text" class="uk-input"/>
            </div>
        </div>
        <div class="uk-margin">
            <label>性别</label>
            <div class="uk-form-controls">
                <label class="uk-margin-right"><input type="radio" class="uk-radio" value="男" name="usersex"/>男</label>
                <label><input type="radio" name="usersex" value="女" class="uk-radio"/> 女</label>
            </div>
        </div>
        <div class="uk-margin">
            <label>手机号</label>
            <div class="uk-form-controls">
                <input id="userPhone" type="text" class="uk-input"/>
            </div>
        </div>
        <div class="uk-margin">
            <label>邮箱</label>
            <div class="uk-form-controls">
                <input id="userfox" type="text" class="uk-input"/>
            </div>
        </div>
        <div class="uk-margin">
            <label>角色</label>
            <div class="uk-form-controls">
                <input id="userrole" type="text" class="uk-input"/>
            </div>
        </div>
        <div uk-margin class="uk-text-right">
            <button type="button" class="uk-button-danger uk-button uk-button-small" id="submitput">保存</button>
            <button type="button" class="uk-button-danger uk-button uk-button-small">清空</button>
        </div>
    </div>
</div>

<div id="off-pushadd" uk-offcanvas="mode:push;overlay: true;">
    <div class="uk-offcanvas-bar">
        <button type="button" class="uk-offcanvas-close" uk-close></button>
        <div class="uk-h3">新增角色</div>
        <div class="uk-margin">
            <label>用户名</label>
            <div class="uk-form-controls">
                <input id="addusername" type="text" class="uk-input">
            </div>
        </div>

        <div class="uk-margin">
            <label>密码</label>
            <div class="uk-form-controls">
                <input id="adduserpassword" type="text" class="uk-input">
            </div>
        </div>
        <div class="uk-margin">
            <label>年龄</label>
            <div class="uk-form-controls">
                <input id="adduserage" type="number" class="uk-input"/>
            </div>
        </div>
        <div class="uk-margin">
            <label>性别</label>
            <div class="uk-form-controls">
                <label class="uk-margin-right"><input type="radio" class="uk-radio" name="addsex" value="男" checked/>男</label>
                <label><input type="radio" name="addsex" class="uk-radio" value="女" /> 女</label>
            </div>
        </div>
        <div class="uk-margin">
            <label>手机号</label>
            <div class="uk-form-controls">
                <input id="adduserPhone" type="text" class="uk-input"/>
            </div>
        </div>
        <div class="uk-margin">
            <label>邮箱</label>
            <div class="uk-form-controls">
                <input id="adduserfox" type="text" class="uk-input"/>
            </div>
        </div>
        <div class="uk-margin">
            <label>角色</label>
            <div class="uk-form-controls">
                <input id="adduserrole" type="text" class="uk-input"/>
            </div>
        </div>
        <div uk-margin class="uk-text-right">
            <button type="button" class="uk-button-danger uk-button uk-button-small" id="submitadd">保存</button>
            <button type="button" class="uk-button-danger uk-button uk-button-small">清空</button>
        </div>
    </div>
</div>
<!--uk-table-expand: 扩展表格列的宽度,通常用于占用可用的水平空间。-->
<!--uk-table-small: 使用更小的单元格和字体,适用于紧凑型表格布局。-->
<!--uk-table-responsive: 使表格具有响应性,在小屏幕上水平滚动以显示全部内容。-->
<!--uk-table-divider: 在表格行之间添加分隔线,增加行的区分度。-->
<!--uk-table-hover: 在鼠标悬停在表格行上时添加悬停效果,以突出显示该行。-->
<!--uk-table-justify: 对齐表格内容,使每列的内容在水平方向上对齐。-->
<!--uk-table-large: 使用较大的单元格和字体,适用于需要更大可读性的表格。-->
<!--uk-table-link: 使表格行可以点击,通常用于链接到其他页面或操作。-->
<!--uk-table-middle: 垂直居中对齐表格单元格内容。-->
<!--uk-table-shrink: 使表格列的宽度尽可能缩小,通常用于内容较少的列。-->
<!--uk-table-striped: 添加条纹效果,奇偶行背景颜色交替变化,以提高表格的可读性。-->
<div class="uk-margin-small-top uk-margin-small-left">
    <div uk-margin>
        <button type="button" class="uk-button uk-button-small uk-button-primary" uk-toggle="target: #off-pushadd">添加</button>

    </div>
</div>

<div id="modal-con" class="uk-modal-container" uk-modal>
    <div class="uk-modal-dialog uk-modal-body">
        <div class="uk-modal-close-outside" uk-close></div>
        <div class="uk-modal-title">
            <div class="uk-h4">用户ID
            <div class="uk-label uk-label-success"></div>
            </div>
            <div class="uk-h4">用户名
                <div class="uk-label uk-label-success"></div>
            </div>
            <div class="uk-h4">用户手机号
                <div class="uk-label uk-label-success"></div>
            </div>
        </div>
        <div class="uk-container">
            <ul class="uk-list uk-list-divider">
                <li>
                    <label><input class="uk-checkbox" type="checkbox">
                        <a href="#" class="uk-text-bold uk-link-text uk-margin-small-left toggle-item">多门店配置</a>
                    </label>
                    <ul class="uk-list tree-item uk-hidden uk-animation-slide-bottom-small">
                        <li><label><input class="uk-checkbox" type="checkbox" checked> 首页</label></li>
                        <li><label><input class="uk-checkbox" type="checkbox" checked> 硬件设备配置</label></li>
                        <li><label><input class="uk-checkbox" type="checkbox" checked> 门店员工管理</label></li>
                        <li><label><input class="uk-checkbox" type="checkbox" checked> 门店统计信息</label></li>
                        <li><label><input class="uk-checkbox" type="checkbox"> 门店状态管理</label></li>
                    </ul>
                </li>

            </ul>
        </div>

</div>
<table class="uk-table uk-table-small uk-table-expand uk-table-responsive uk-table-middle uk-table-divider uk-table-justify">
    <thead>
    <tr class="uk-background-muted">
        <th>用户编号</th>
        <th>用户名</th>
        <th>密码</th>
        <th>性别</th>
        <th>年龄</th>
        <th>手机号</th>
        <th>邮箱</th>
        <th>角色</th>
        <th>状态</th>
        <th>操作</th>
    </tr>
    </thead>
    <tbody>
    <!--    eq: 判断两个值是否相等。-->
    <!--    ne: 判断两个值是否不等。-->
    <!--    lt: 判断第一个值是否小于第二个值。-->
    <!--    le: 判断第一个值是否小于或等于第二个值。-->
    <!--    gt: 判断第一个值是否大于第二个值。-->
    <!--    ge: 判断第一个值是否大于或等于第二个值。-->
    {{range $i,$v := .data}}
    <tr>
        <td>{{$v.id}}</td>
        <td>{{$v.name}}</td>
        <td>{{$v.password}}</td>
        <td>{{$v.sex}}</td>
        <td>{{$v.age}}</td>
        <td>{{$v.userPhone}}</td>
        <td>{{$v.email}}</td>
        <td>
            {{ if eq $v.roleName "超级管理员" }}
            <div class="uk-label uk-label-danger" name="switch">{{ $v.roleName }}</div>
            {{ else if eq $v.roleName "管理员" }}
            <div class="uk-label uk-label-warning">{{ $v.roleName }}</div>
            {{ else }}
            <div class="uk-label uk-label-success">{{ $v.roleName }}</div>
            {{ end }}
        </td>
        <td>
            {{if eq $v.isOpen "1"}}
            <input type="checkbox" data-userid="{{$v.id}}" data-userstatus="$v.isOpen" name="switch" class="js-switch small" checked/>
            {{else}}
            <input type="checkbox" data-userid="{{$v.id}}" data-userstatus="$v.isOpen" name="switch" class="js-switch small"/>
            {{end}}
        </td>
        <td>
            <div uk-margin>
                <button type="button" class="uk-button uk-button-primary uk-button-small" data-id="{{$v.id}}"
                        data-phone="{{$v.userPhone}}" data-name="{{$v.name}}" data-sex="{{$v.sex}}" data-password="{{$v.password}}" data-age="{{$v.age}}"
                        data-userPhone="{{$v.userPhone}}" data-email="{{$v.email}}" data-role="{{$v.roleName}}"
                        name="messageegit" uk-toggle="target: #off-push">编辑信息
                </button>
                <a class="uk-button uk-button-primary uk-button-small" data-userid="{{$v.id}}" data-username="{{$v.name}}" data-userPhone="{{$v.userPhone}}" href="#modal-con" uk-toggle>编辑权限</a>
                <button type="button" class="uk-button uk-button-danger uk-button-small" data-id="{{$v.id}}"
                        name="UserListDel">删除
                </button>
            </div>
        </td>
    </tr>
    {{end}}
    </tbody>
</table>

<div class="uk-flex uk-margin-top uk-width-1-1@s uk-flex-right">
    {{template "header/uikit-page.html" .}}
</div>
<script type="text/javascript" > $(document).ready(function() { // 增加新用户 $("#submitadd").on("click",function () { let url = window.location.pathname; http.Post(url, { "addusername": $("#addusername").val().toString(), "adduserpassword": $("#adduserpassword").val().toString(), "adduserage": $("#adduserage").val().toString(), "addusersex": $('input[name="addsex"]:checked').val(), "adduserfox": $("#adduserfox").val().toString(), "adduserPhone": $("#adduserPhone").val().toString(), "adduserrole": $("#adduserrole").val() }).then(result => { // Qmsg.info() // Qmsg.warning() // Qmsg.error() // Qmsg.success() // Qmsg.loading() if (result.code == 1) { UIkit.offcanvas("#off-pushadd").hide(); Qmsg.success(result.message) } else { Qmsg.error(result.message) } }) }) // 修改用户资料 $("#submitput").on("click",function () { let url = window.location.pathname; console.log(url); http.put(url, { "username": $("#username").val(), "userpassword": $("#userpassword").val(), "userage": $("#userage").val(), "usersex": $('input[name="usersex"]:checked').val(), "userfox": $("#userfox").val(), "userPhone": $("#userPhone").val(), "userrole": $("#userrole").val(), "userid": $("#userid").val(), }).then(result => { // Qmsg.info() // Qmsg.warning() // Qmsg.error() // Qmsg.success() // Qmsg.loading() if (result.code == 1) { Qmsg.success(result.message) $("#username").val("") $("#userpassword").val("") $("#userage").val("") $('input[name="usersex"]:checked').val("") $("#userfox").val("") $("#userPhone").val("") $("#userrole").val("") $("#userid").val("") } else { Qmsg.error(result.message) } }) }) // 删除该用户 $("[name='UserListDel']").on("click", function () { console.log(window.location.pathname) let url = window.location.pathname; http.delete(url, { "id": $(this).data("id").toString() }).then(result => { // Qmsg.info() // Qmsg.warning() // Qmsg.error() // Qmsg.success() // Qmsg.loading() if (result.code == 1) { $(this).closest("tr").remove() Qmsg.success(result.message) } else { Qmsg.error(result.message) } }) }); // 修改状态 $("[name='switch']").on("change", function () { let url = "/Public/User_listStatus"; let status = 0; if (this.checked) { status = 1; } else { status = 0; } console.log(url) http.Post(url, { "userid": $(this).data("userid").toString(), "userstatus": status.toString() }).then(result => { // Qmsg.info() // Qmsg.warning() // Qmsg.error() // Qmsg.success() // Qmsg.loading() if (result.code == 1) { Qmsg.success(result.message) } else { Qmsg.error(result.message) } }) // http.delete(url, { // "id": $(this).data("id").toString() // }).then(result => { // // Qmsg.info() // // Qmsg.warning() // // Qmsg.error() // // Qmsg.success() // // Qmsg.loading() // if (result.code == 1) { // $(this).closest("tr").remove() // Qmsg.success(result.message) // } else { // Qmsg.error(result.message) // } // }) }); // 处理父子复选框的状态同步 $('.uk-checkbox').on('change', function() { var isChecked = $(this).is(':checked'); $(this).closest('li').find('.uk-checkbox').prop('checked', isChecked); var parentLi = $(this).closest('ul').closest('li'); while (parentLi.length) { var allChecked = parentLi.find('ul .uk-checkbox').length === parentLi.find('ul .uk-checkbox:checked').length; parentLi.children('label').children('.uk-checkbox').prop('checked', allChecked); parentLi = parentLi.closest('ul').closest('li'); } }); // 处理折叠和展开 $('.toggle-item').on('click', function(e) { e.preventDefault(); var $this = $(this); var $target = $this.parent().next('ul'); $target.toggleClass('uk-hidden'); $this.toggleClass('expanded'); }); $('.js-switch').each(function () { new Switchery(this, {color: '#4CAF50'}); }); // 调整大小 $('.js-switch.small').each(function () { $(this).next().addClass('switchery-small'); }); $('.js-switch.large').each(function () { $(this).next().addClass('switchery-large'); }); $('[name="codes"]').on("click", function () { $("#code").val($(this).text()) }); $('[name="roles"]').on("click", function () { $("#role").val($(this).text()) }); $("#resetText").on("click", function () { $("#code").val(""); $("#role").val(""); $("#usertitle").val(""); }); $("#search").on("click", function () { let title = $("#usertitle").val(); let code = $("#code").val(); let role = $("#role").val(); let queryParams = new URLSearchParams({ name: title, code: code, role: role }); window.top.location.href = window.top.location.pathname + "?" + queryParams.toString(); }); $("#resetText").on("click", function () { window.top.location.href = window.top.location.origin + window.top.location.pathname; }); //点击表格获取数据 $("[name='messageegit']").on("click", function () { // data-id="$v.id" data-name="$v.name" data-sex="$v.sex" data-userPhone="$v.userPhone" data-email="$v.email" data-roleName="$v.roleName" $("#userid").val($(this).data("id")) $("#username").val($(this).data("name")) $("#userpassword").val($(this).data("password")) $("#userage").val($(this).data("age")) if ($(this).data("sex") == "男") { $("[name='usersex']:eq(0)").prop("checked", true); $("[name='usersex']:eq(1)").prop("checked", false); } else if ($(this).data("sex") == "女") { $("[name='usersex']:eq(0)").prop("checked", false); $("[name='usersex']:eq(1)").prop("checked", true); } $("#userPhone").val($(this).data("phone")); $("#userfox").val($(this).data("email")); $("#userrole").val($(this).data("role")); }) }); </script>
{{template "header/bodybuttom.html" }}
{{end}}`

`{{define "header/bodytop.html"}}
{{template "home/home.html" .}}

<script> document.addEventListener("DOMContentLoaded", function() { var content = `{{template "header/header.html" }} {{end}}`

{{define "header/bodybuttom.html"}}
var objectDoc = $('#contentObject')[0].contentDocument || objectElement.contentWindow.document
objectDoc.open()
objectDoc.write(content)
objectDoc.close()
})
</script>

{{end}}`

@xiaobai-6011
Copy link
Author

`
{{define "header/bodybuttom.html"}}
var objectDoc = $('#contentObject')[0].contentDocument || objectElement.contentWindow.document
objectDoc.open()
objectDoc.write(content)
objectDoc.close()
})
</script>

{{end}}

There is a </script> page in this line that goes to this place

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant