Html 是否可以将href属性设置为任意字符串,而不是以http开头?

Html 是否可以将href属性设置为任意字符串,而不是以http开头?,html,dom,tags,href,Html,Dom,Tags,Href,我想将标记的HTML href属性设置为任意文本,以便访问者通过“复制链接位置”上下文菜单将其复制到剪贴板。是否可以将标记href属性设置为该任意字符串,该字符串不以http或任何其他方案(如ftp)开头?您可以将属性值设置为任意字符串,但当用户选择“复制链接位置”时,它将使用该字符串,将其解析为URL,然后返回绝对URL。如果字符串不是以URL方案开头,则它将被视为一个相对URL并给定一个。以下是href属性可能包含的值: 绝对URL-指向另一个网站(如 href=”http://www.e

我想将
标记的HTML href属性设置为任意文本,以便访问者通过“复制链接位置”上下文菜单将其复制到剪贴板。是否可以将
标记
href
属性设置为该任意字符串,该字符串不以
http
或任何其他方案(如
ftp
)开头?

您可以将属性值设置为任意字符串,但当用户选择“复制链接位置”时,它将使用该字符串,将其解析为URL,然后返回绝对URL。如果字符串不是以URL方案开头,则它将被视为一个相对URL并给定一个。

以下是
href
属性可能包含的值:

  • 绝对URL-指向另一个网站(如
    href=”http://www.example.com/default.htm“
  • 相对URL-指向网站中的文件(如
    href=“default.htm”
  • 链接到页面中具有指定id的元素(如
    href=“#top”
  • 其他协议(如
    https://
    ftp://
    mailto:
    文件:
    ,等等)
  • 脚本(如
    href=“javascript:alert('Hello');”

是的,您可以将
href
属性设置为您喜欢的任何内容,但“复制链接位置”将始终将其解析为完整的URL,因此它不起作用。例如,如果您位于“”页面上,并且将href设置为“foo”,则当用户复制链接时,它实际上会复制“”

更好的选择是使用JavaScript执行大多数浏览器中内置的copy命令,如下面的示例所示。有关更多详细信息,请参阅

$('.copy')。每个(函数(){
var$this=$(this);
var copyText=$this.text();
var copyButton=$('Copy');
copyButton.on('单击',函数()){
copyTextToClipboard(copyText);
})
$this.append(复制按钮);
})
//抄袭https://stackoverflow.com/a/30810322/1901857
功能copyTextToClipboard(文本){
var textArea=document.createElement(“textArea”);
//
//***此样式是一个额外步骤,可能不需要***
//
//为什么会在这里?为了确保:
//1.元素能够有焦点和选择。
//2.如果元素要进行flash渲染,则其视觉影响最小。
//3.在选择和复制时,较少出现**可能**的片状,如果
//textarea元素不可见。
//
//很可能元素甚至不会渲染,甚至连一个闪光都不会,
//所以其中一些只是预防措施。但是在IE元素中
//当弹出框询问用户的权限时可见
//要复制到剪贴板的网页。
//
//放置在屏幕左上角,与滚动位置无关。
textArea.style.position='fixed';
textArea.style.top=0;
textArea.style.left=0;
//确保其宽度和高度较小。设置为1px/1em
//不起作用,因为这在某些浏览器上会产生负w/h。
textArea.style.width='2em';
textArea.style.height='2em';
//我们不需要填充,如果它进行flash渲染,则可以减小大小。
textArea.style.padding=0;
//清理边界。
textArea.style.border='none';
textArea.style.outline='none';
textArea.style.boxShadow='none';
//如果出于任何原因渲染,请避免白色框闪烁。
textArea.style.background='transparent';
textArea.value=文本;
document.body.appendChild(textArea);
textArea.select();
试一试{
var successful=document.execCommand('copy');
var msg=successful?'successful':'successful';
log('复制文本命令为'+msg');
}捕捉(错误){
log('Oops,无法复制');
}
document.body.removeChild(textArea);
}
a.copy{
位置:相对位置;
}
a、 复制。复制按钮{
显示:无;
位置:绝对位置;
左:100%;
排名:0;
背景颜色:灰色;
}
a、 复制:悬停。复制按钮{
显示:块;
}


单击该按钮可在该分区中打开。
yes您可以提供无架构的URL。