修改" a"字符串中的标签并在javascript函数

时间:2016-12-01 15:23:14

标签: javascript angularjs string ionic-framework

我通过包含一些锚链接的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>

然后返回已处理的字符串。

1 个答案:

答案 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组:

  1. 链接的第一部分,就在关闭>
  2. 的第一个<a之前
  3. 链接
  4. 链接的第二部分,以>开头,直到链接结束。
  5. 然后我们通过将3个以上组加入onClick...来组合结果。

    至少它适用于你的例子; - )