从Google Chrome地址栏复制hostname时去除http:// 前缀

从很早之前的某个版本开始,Google Chrome的地址栏的URL不再显示"http://", 但是当我想复制域名时,在地址栏选中域名部分,按Command+C复制,剪贴板里的内容会自动加上"http://"。

于是我把域名贴到命令行里执行的时候,经常是这样的场景

oylbin@ouyangs-MacBook-Air:~ (Window: ) > 
> ping http://www.qq.com/
ping: cannot resolve http://www.qq.com/: Unknown host

这个困扰了我好多年啊,今天终于忍不住了,上网搜搜有没有解决方案

很多人受此困扰,reddit上有人说他每次复制域名时故意不选中第一个字符,这样复制时,就只有选中部分的文本内容了,然后贴到命令行时自己先手敲没有被复制的那一个字符,哈哈,这跟我平时操作一样嘛。。。

搜了一下没有找到解决方案,倒是看到有人写了一个Chrome extension来专门做这个事情。可惜网速不好,这个扩展半天没下载成功,看了一下扩展大小,2.66MB,就无语了,这么个鸟功能,怎么可能要这么大。

这个需求也不复杂,javascript也能通过window.location.hostname读到hostname,如果能通过javascript将文本复制到系统剪贴板,那做个Bookmarklet就搞定了啊。

搜了一下,Chrome里确实可以通过document.execCommand('Copy');执行复制命令,所以有了如下的解决方案。

在地址栏新建一个书签,取名为“GetHostname”,在URL部分粘贴如下javascript代码:

javascript:(function(){
    function executeCopy(text) {
        var input = document.createElement('textarea');
        document.body.appendChild(input);
        input.value = text;
        input.focus();
        input.select();
        document.execCommand('Copy');
        input.remove();
    }
    executeCopy(window.location.hostname);
})();

然后也去superuser.com上分享了一下,希望能帮到同样有这个困扰的人。


Last modified on 2016-09-03