之前我们发布过一篇WordPress网站通过 JS 代码实现点击按钮一键复制指定内容方法教程,不过当时介绍的方法,是以按钮的形式展现的,而且也没有短代码,使用起来稍有不便。
今天介绍的点击复制方法, 最终可实现“所见即所得”,也就是用户看到的内容就是点击复制的内容,比较适合一些“口令”类的信息,并且增加了一些隐现效果,具体可参考:
实现方法跟上个教程类似,不过这个教程做了一些简化,css部分也集成到了JS代码,添加更加简便了。
HTML 部分代码(添加到functions.php)
function copy_text_shortcode( $atts, $content = null ) {
$atts = shortcode_atts( array(
'color' => '',
'text' => '复制',
'class' => 'itemCopy',
'link' => '',
), $atts, 'copy_text' );
$style = '';
if ( ! empty( $atts['color'] ) ) {
$style = 'style="color: ' . esc_attr( $atts['color'] ) . ';"';
}
$link = '';
if ( ! empty( $atts['link'] ) ) {
$link = 'href="' . esc_url( $atts['link'] ) . '"';
$content_output = '<a ' . $link . '>' . $content . '</a>';
} else {
$content_output = $content;
}
return '<span class="' . esc_attr( $atts['class'] ) . '" data-clipboard-text="' . esc_attr( strip_tags( $content ) ) . '" ' . $style . '>' . $content_output . '</span>';
}
add_shortcode( 'copy_text', 'copy_text_shortcode' );
//下面部分貌似可省略
function enqueue_custom_scripts() {
wp_enqueue_script('custom-script', get_stylesheet_directory_uri() . '/custom-script.js', array('jquery'));
}
add_action('wp_enqueue_scripts', 'enqueue_custom_scripts');
JS 部分代码有两种方案(利用 ClipboardJS 或 原生 JavaScript )
js 部分代码可按照上篇教程添加到 footer.php ,如果主题自带添加自定义代码功能,也可以在主题设置中添加。
ClipboardJS
<script>
jQuery(function($) {
var clipboard = new ClipboardJS('.itemCopy');
$('.itemCopy').on('mouseenter', function() {
$(this).css('background-color', '#f2f2f2');
$(this).css('cursor', 'pointer');
}).on('mouseleave', function() {
$(this).css('background-color', '');
$(this).css('cursor', 'default');
});
clipboard.on('success', function(e) {
var hasLink = $(e.trigger).find('a').length > 0;
if (hasLink) {
var confirmOpen = window.confirm("已复制成功!是否打开链接?");
if (confirmOpen) {
window.open($(e.trigger).find('a').attr('href'), '_blank');
}
} else {
window.alert("已复制成功!");
}
});
clipboard.on('error', function(e) {
window.alert("复制失败!请手动复制。");
});
});
</script>
原生 JavaScript
<script>
jQuery(function($) {
$('.itemCopy').on('mouseenter', function() {
$(this).css('background-color', '#f2f2f2');
$(this).css('cursor', 'pointer');
}).on('mouseleave', function() {
$(this).css('background-color', '');
$(this).css('cursor', 'default');
}).on('click', function(event) {
event.preventDefault();
var text = $(this).data('clipboard-text');
var hasLink = $(this).find('a').length > 0;
var tempInput = document.createElement("textarea");
tempInput.style = "position: absolute; left: -1000px; top: -1000px";
tempInput.value = text;
document.body.appendChild(tempInput);
tempInput.select();
document.execCommand("copy");
document.body.removeChild(tempInput);
if (hasLink) {
var confirmOpen = window.confirm("已复制成功!是否打开链接?");
if (confirmOpen) {
window.open($(this).find('a').attr('href'), '_blank');
}
} else {
window.alert("已复制成功!");
}
});
});
</script>


评论0