在反应中打开带有 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.urlgoogle.com,它会打开一个带有 url localhost: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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...