我刚刚创建了原始的html页面.这是:示例 这里是它的标记:
<a href="www.google.com">www.google.com</a>
<br/>
<a href="http://www.google.com">http://www.google.com</a>
Run Code Online (Sandbox Code Playgroud)
如您所见,它包含两个链接.第一个人的href没有'http'前缀,当我点击此链接时,浏览器会将我重定向到不存在的页面https://fiddle.jshell.net/_display/www.google.com.第二个href有这个前缀,浏览器生成正确的url http://www.google.com/.是否可以使用hrefs,如www.something.com没有http(s)前缀?
Dav*_*vid 27
这是可能的,事实上你现在正在这样做.它只是没有做你认为它做的事情.
考虑链接到此时浏览器的作用:
href="index.html"
Run Code Online (Sandbox Code Playgroud)
当你链接到这个时它会怎么做?:
href="index.com"
Run Code Online (Sandbox Code Playgroud)
或这个?:
href="www.html"
Run Code Online (Sandbox Code Playgroud)
要么?:
href="www.index.com.html"
Run Code Online (Sandbox Code Playgroud)
浏览器不知道你的意思,它只知道你说的是什么.如果没有前缀,它将遵循当前HTTP地址的标准.前缀是告诉它需要完全从新的根地址开始.
请注意,您不需要该http:部件,您可以这样做:
href="//www.google.com"
Run Code Online (Sandbox Code Playgroud)
浏览器将使用当前协议(http,https等等),但//告诉它这是一个新的根地址.
ssc*_*ep3 16
您可以通过//在路径前使用来省略协议.这是一个例子:
<a href="//www.google.com">Google</a>
Run Code Online (Sandbox Code Playgroud)
通过使用//,您可以告诉浏览器这实际上是一个新的(完整)链接,而不是相对的链接(相对于您当前的链接).
Che*_*mah 15
我在 React 项目中创建了一个可以帮助你的小函数:
const getClickableLink = link => {
return link.startsWith("http://") || link.startsWith("https://") ?
link
: `http://${link}`;
};
Run Code Online (Sandbox Code Playgroud)
你可以这样实现它:
const link = "google.com";
<a href={getClickableLink(link)}>{link}</a>
Run Code Online (Sandbox Code Playgroud)