js识别字符串中的链接并使之可跳转

JavaScript014

js识别字符串中的链接并使之可跳转,第1张

最近项目遇到一个功能,对话框中的内容可能会包含链接,需要识别并可直接点击,对方的对话框内容是后台返回的数据。

第一次脑中的想法是找到内容中的链接摘出来...,有点想偏了,因为看到返回的内容中的链接是有<a>标签,所以只需要利用框架中可以直接识别html标签的服务或指令就可以。vue项目中直接使用v-html就可以解析

在angular项目中没有类似v-html的指令,需要借助$sce服务的trustAsHtml(),

sce服务:因为如果在angularjs中绑定的数据有html标签时,如上面的<h1>,会被angularjs认为是不安全的而自动过滤掉,为了保留这些标签就需要开启非安全模式,这是非常危险的。sce是angularJS自带的安全处理模块,因此需要$sce.trustAsHtml()方法将数据内容以html的形式解析并返回。

ng-bind-html指令是通过一个安全的方式将内容绑定到HTML元素上,该属性依赖于$sanitize,需要在项目中引入angular-sanitize.js文件,并在module定义时注入该服务ngSanitize。

如果后台返回的数据的链接不是a标签,只是普通的 www.cnblogs.com 这种的字符串,我们的处理方式,需要利用正则先对它处理,给他加上a标签。

end!

添加以下代码执行就可以了

<SCRIPT

LANGUAGE="JavaScript">

<!-

var

anchors

=

document.getElementById("DIV名").getElementsByTagName("a")

for(var

i=0i<anchors.lengthi++)

{var

anchor

=

anchors[i]anchor.target="_blank"}

//–>

</SCRIPT>

注解:target="_blank"

这个代码就是新窗口打开效果。

1.JS跳转页面参考代码

第一种:

<script language="javascript" type="text/javascript">

window.location.href="login.jsp?backurl="+window.location.href

</script>

第二种:

<script language="javascript">

alert("返回")

window.history.back(-1)

</script>

第三种:

<script language="javascript">

window.navigate("top.jsp")

</script>

第四种:

<script language="JavaScript">

self.location='top.htm'

</script>

第五种:

<script language="javascript">

alert("非法访问!")

top.location='xx.jsp'

</script>

2.javascript中弹出选择框跳转到其他页面

<script language="javascript">

<!--

function logout()...{

if (confirm("你确定要注销身份吗?是-选择确定,否-选择取消"))...{

window.location.href="logout.asp?act=logout"

}

}

-->

</script>

3.javascript中弹出提示框跳转到其他页面

<script language="javascript">

<!--

function logout()...{

alert("你确定要注销身份吗?")

window.location.href="logout.asp?act=logout"

}

-->

</script>

[/code]