Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
html从字符串https://javascript中删除协议_Javascript_Html_Angular - Fatal编程技术网

html从字符串https://javascript中删除协议

html从字符串https://javascript中删除协议,javascript,html,angular,Javascript,Html,Angular,我有一个html,上面写着 <a class="Test" ng-href="{{d.link}}">link</a> 因此,我的d.link等于例如google.com ng href不会带我去看它,因为它不是https:// 因此,我的逻辑解释是添加ng href=https://{{d.link}} 但是如果我的d.link是,那么我的ng href将是。。我需要转到JS还是可以用html解决 谢谢您可以将其留给浏览器来决定使用何种协议,因此您的代码如下:ng h

我有一个html,上面写着

<a class="Test" ng-href="{{d.link}}">link</a>
因此,我的d.link等于例如google.com ng href不会带我去看它,因为它不是https://

因此,我的逻辑解释是添加ng href=https://{{d.link}}

但是如果我的d.link是,那么我的ng href将是。。我需要转到JS还是可以用html解决


谢谢

您可以将其留给浏览器来决定使用何种协议,因此您的代码如下:ng href=/{{d.link}

试试看,希望这能解决你的问题。

如果你愿意

{{"//"+d.link.replace(/^(http|https):\/\/(.+)/,"$2")}}

这将使用Regex从给定字符串中删除http://或https://。$2是第二组括号,也称为捕获组。

为什么不能强制d.link使用一种或另一种格式,而不是同时处理这两种格式。这是一个设计缺陷,如果你只是试图用HTML和JavaScript来解决它,它很容易出现错误。。。顺便说一句,你可以不使用协议,只需使用//google.com启动uri。这样,它会根据当前页面是否使用https自动选择是否使用https。他说该协议已经包含在变量中。。因此,使用你的建议,他的属性将是//http://google.....@Occam的Razor呜呼,所以他必须使用JS解决方案,并且必须使用JS删除协议。也许你的意思是d.link=d.link.replace/http[s]?:/,也许OP的意思也是,但我们可能永远也不知道。你的答案现在说明了可选的s,并使用了第二个匹配项,所以这更好,但仍然不正确。如果它是来自另一个域的url,则url需要以//开头,否则它将假定google.com是一个相对urlhttp://his-domain.com/google.com.. 最好的方法是删除http或https(如果存在)。打开控制台,键入window.location.href=google.com,看看会发生什么