Merge branch 'main' of ssh://ssh.github.com:443/netcccyun/dnsmgr

This commit is contained in:
net909
2025-07-06 11:17:06 +08:00

View File

@@ -290,12 +290,16 @@ $(document).ready(function(){
field: 'Value',
title: '记录值',
formatter: function(value, row, index) {
var display = value;
if(row.Type == 'MX') display = value + ' | ' + row.MX;
var copyId = 'copy-value-' + row.RecordId;
// 只允许安全字符,避免引号问题
var safeValue = (value+'').replace(/'/g, "'").replace(/\\/g, "\\\\");
return '<span id="'+copyId+'">'+display+'</span><a href="javascript:void(0);" title="复制记录值" onclick="copyToClipboard(\''+safeValue+'\', \'#'+copyId+'\')" style="padding-left:6px;"><i class=\"fa fa-copy\"></i></a>';
if(row.Type == 'MX') {
// 只复制 mx.yandex.net按钮在其右侧优先级单独显示
return '<span id="'+copyId+'" data-value="'+htmlEscape(value)+'">'+value+'</span>'
+ '<a href="javascript:void(0);" title="复制记录值" onclick="copyToClipboard(null, \'#'+copyId+'\')" style="padding-left:6px;"><i class=\"fa fa-copy\"></i></a>'
+ '<span class="mx-priority"> | '+row.MX+'</span>';
} else {
return '<span id="'+copyId+'" data-value="'+htmlEscape(value)+'">'+value+'</span>'
+ '<a href="javascript:void(0);" title="复制记录值" onclick="copyToClipboard(null, \'#'+copyId+'\')" style="padding-left:6px;"><i class=\"fa fa-copy\"></i></a>';
}
}
},
{
@@ -728,23 +732,38 @@ function advanceSearch(){
}
}
function copyToClipboard(text, selector) {
var tempInput = document.createElement('input');
tempInput.style.position = 'absolute';
tempInput.style.left = '-9999px';
tempInput.value = text;
document.body.appendChild(tempInput);
tempInput.select();
document.execCommand('copy');
document.body.removeChild(tempInput);
if(selector){
var icon = document.querySelector(selector + ' + a i');
if(icon){
var oldClass = icon.className;
icon.className = 'fa fa-check';
setTimeout(function(){ icon.className = oldClass; }, 1000);
}
}
layer.msg('已复制到剪贴板', {icon: 1, time: 600});
if (!text && selector) {
var el = document.querySelector(selector);
if (el) {
text = el.getAttribute('data-value');
}
}
var tempInput = document.createElement('input');
tempInput.style.position = 'absolute';
tempInput.style.left = '-9999px';
tempInput.value = text;
document.body.appendChild(tempInput);
tempInput.select();
document.execCommand('copy');
document.body.removeChild(tempInput);
if(selector){
var icon = document.querySelector(selector + ' + a i');
if(icon){
var oldClass = icon.className;
icon.className = 'fa fa-check';
setTimeout(function(){ icon.className = oldClass; }, 1000);
}
}
layer.msg('已复制到剪贴板', {icon: 1, time: 600});
}
// 工具函数HTML转义防止XSS
function htmlEscape(str) {
return String(str)
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;');
}
</script>
{/block}