Я работаю над плагином браузера, который заменяет все экземпляры "someString" (как определено сложным регулярным выражением) на <a href="http://domain.com/$1">$1</a>
.Это обычно работает нормально, просто делая глобальную замену innerHTML тела.Однако он разрывает страницу, когда находит (и заменяет) «someString» внутри тегов <script>
(то есть как переменную JS или другую ссылку JS).Он также ломается, если «someString» уже является частью якоря.
Так что в основном я хочу сделать глобальную замену для всех экземпляров «someString», если только он не попадает в набор тегов <script></script>
или <a></a>
.
По сути, сейчас у меня есть:
var body = document.getElementsByTagName('body')[0].innerHTML;
body = body.replace(/(someString)/gi, '<a href="http://domain.com/$1">$1</a>');
document.getElementsByTagName('body')[0].innerHTML = body;
Но, очевидно, этого недостаточно.Я боролся уже пару часов и читаю все ответы здесь (включая многие непреклонные, которые настаивают на том, что регулярное выражение не должно использоваться с HTML), поэтому я открыт для предложений о том, как это сделать.Я бы предпочел использовать прямой JS, но при необходимости могу использовать jQuery.
Редактировать - Пример HTML :
<body>
someString
<script type="text/javascript">
var someString = 'blah';
console.log(someString);
</script>
<a href="someString.html">someString</a>
</body>
В этом случае только самый первый экземпляр"someString" следует заменить.