我通过包含一些锚链接的CMS获取字符串数据。
我要将代码编译成应用程序(通过Ionic Framework),所以我需要" a"标签包含一个onClick函数,它将使用" inappbrowser" Cordova插件。
所以我设置了一个名为" processLinks"的函数。发送要处理的字符串:
<p ng-bind-html="processLinks(data[0].value)"></p>
功能如下:
$scope.processLinks = function (inputText) {
return inputText.replace(/<a.*href="(.*?)".*>(.*?)<\/a>/gi, "");
};
目前,这只是删除链接(这是一个临时解决方案)。
所以我需要帮助实现以下目标:
我需要将字符串发送到函数中,然后通过使用&#34; href&#34;插入onClick函数来修改链接。来自每个链接:
我需要修改:
<a href="http://www.thesite.com"></a>
成为:
<a href="http://www.thesite.com" onclick="window.open('http://www.thesite.com', '_system', 'location=yes'); return false;"></a>
然后返回已处理的字符串。
答案 0 :(得分:1)
试试这个新的正则表达式:
$scope.processLinks = function (inputText) {
return inputText.replace(/(<a.*href="(.*?)".*)(>.*?<\/a>)/gi, '$1 onClick="window.open(\'$2\', \'_system\', \'location=yes\'); return false;"$3');
};
一点解释:我们从输入文本中捕获3组:
>
<a
之前
>
开头,直到链接结束。然后我们通过将3个以上组加入onClick...
来组合结果。
至少它适用于你的例子; - )