如何解决在反应中打开带有 url 的新标签
我正在尝试使用 item.url
打开一个新标签页。
问题是,item.url
属性是由客户提供的,而不是我提供的。
所以我无法确定它是以 https://
还是 http://
开头。
例如,用户可以给出 google.com
而不是 https://google.com
。
下面是我的代码。 (此组件位于 /example
)
<URLText onClick={() => window.open(item.url,'_blank')}>Click</URLText>
-
URLText
只是一个样式组件(div)。 -
如果
item.url
是google.com
,它会打开一个带有 urllocalhost:3000/example/google.com
的新标签,
而不是只打开google.com
。
解决方法
试试这个方法。
<URLText onClick={() => window.open('//'+item.url,'_blank')}>Click</URLText>
小提琴样本 - https://jsfiddle.net/pecu0szq/12/
,改用这个:
<URLText onClick={() => window.open((item.url.startsWith("http://") || item.url.startsWith("https://")) ? item.url : "http://" + item.url,'_blank')}>Click</URLText>
这使用三元运算符来检查传递的 URL 是否包含 https://
或 http://
,如果不包含,则将其附加到 URL 的开头,并将附加值或原始值返回给函数参数。
您可以使用 <?php
class MyTest {
public static $test1 = 'a';
public static $test2 = 'b';
public static function getProperties() {
//how to code here...?
}
}
//plz return $test1,$test2
MyTest::getProperties();
获取当前 url 的协议。
window.location.protocol
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。