Прежде всего, как это вообще работает?
Очевидно, в других местах кода вы найдете это:
String.prototype.link = function(url) { /* ... */ };
...то закончится возвращением строки.replace
делает вызов анонимной функции, переданной ей со строкой, которая соответствует регулярному выражению в качестве аргумента;replace
ожидает, что эта функция вернет соответствующую замену, которую затем вставит в строку.(Эта вторая форма replace
, которая принимает функцию, а не строку в качестве второго аргумента, весьма полезна, но не так хорошо известна, как можно было ожидать.) Анонимная функция вызывает функцию link
для аргумента(url
), которая является строкой и возвращает результат.Отсюда мое убеждение, что вы найдете функцию link
, добавляемую к String.prototype
где-то в коде.
По крайней мере, некоторые браузеры добавляют кучу нестандартных методов к String
экземпляры, которые обертывают строку в теги;link
является одним из них.Он просто возвращает разметку элемента a
с использованием заданного URL.
Как это можно изменить, чтобы ссылка открывалась в другом окне?
На самом деле ответ на первый вопрос отвечает на второй: предположительно, вы найдете разметку в этой функции link
;вы можете обновить его там.
Просто замените использование нестандартной функции link
на собственную конкатенацию строк:
return '<a href="' + url + '">' + url + '</a>';
Обычно я бы сказал, что вам следуетОбязательно кодируйте объекты HTML, но, поскольку вы уже имеете дело со строкой исходного кода HTML, предположительно, они уже должны быть правильно закодированы.