如何停止自定义js中的Focus()从滚动到页脚?

时间:2020-12-11 作者:Jon Fergus

我正在使用js创建一个;“复制到剪贴板”;按钮,使用以下代码here:

function copy(selector){
  var $temp = $("<div>");
  $("body").append($temp);
  $temp.attr("contenteditable", true)
       .html($(selector).html()).select()
       .on("focus", function() { document.execCommand(\'selectAll\',false,null); })
       .focus();
  document.execCommand("copy");
  $temp.remove();
}
然后,我使用以下命令加载脚本:

add_action( \'wp_enqueue_scripts\', \'load_copy\' );
function load_copy() {
    wp_enqueue_script(\'copyjs\', get_template_directory_uri() . \'/js/copy.js\', array(\'jquery\') );
}
然后,我有一个按钮设置来触发这个js onclick,从div元素中复制文本。该函数工作得很好,除了:因为js加载在WP的页脚中,所以focus() 命令使页面在触发onclick事件时滚动到底部。

我试过使用focus({preventScroll: true}) 但之后这个函数就不起作用了,我对js的理解还不够透彻,无法找出原因。

有没有人有办法阻止页面滚动?

编辑:添加我现在使用的解决方案,来自下面Veerji的答案,只做了一个更改。

function copyToClipboard(selector){
        var $temp = jQuery("<div>");
        jQuery("body").append($temp);
        $temp.attr("contenteditable", true)
            .html(jQuery(selector).html()).css(\'position\', \'fixed\').select()
            .on("focus", function() { document.execCommand(\'selectAll\',false,null); })
            .focus().css(\'position\', \'static\');
        document.execCommand("copy");
        $temp.remove();
}

1 个回复
最合适的回答,由SO网友:Veerji 整理而成

在jQuery中focus 默认情况下,将页面滚动到元素。如果我们使用focus({preventScroll: true}) 我们的复制功能无法按您的尺寸工作。所以我使用了一些css黑客。请参阅以下jQuery代码。

function copyToClipboard(selector, event){
    event.preventDefault();
    var $temp = jQuery("<div>");
    jQuery("body").append($temp);
    $temp.attr("contenteditable", true)
      .html(jQuery(selector).html()).css(\'position\', \'fixed\').select()
      .on("focus", function() { document.execCommand(\'selectAll\',false,null); })
      .focus().css(\'position\', \'static\');
    document.execCommand("copy");
    $temp.remove();
}
这对我来说很有效。

如果你不想使用这种黑客,你也可以使用一些纯javascript代码。例如this

相关推荐

有人知道如何将一个完整的jQuery插件插入到WordPress元素页面中吗?

我尝试在一个wp页面中实现一个jquery插件,该页面显示在elementor页面上。这里是the link 到插件。What I have tried so far:1. 我通过插件加载了jquery文件(通过functions.php它不起作用)-&燃气轮机;头部载荷:https://1drv.ms/u/s!AikSNhBAk4tevjHlEeV67BifIivC我不确定路径是否正确,是否有必要在wordpress上使用它2. 我插入了html和css(这是最简单的部分)3. 我插入(+将“$”替换为