我正在开发一个浏览器插件,该插件用<a href="http://domain.com/$1">$1</a>
替换所有“ someString”(由复杂的正则表达式定义)的实例。 通常,只要对主体的innerHTML进行全局替换,就可以正常工作。 但是,当它找到(并替换) <script>
标记内的“ someString”(即作为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”的第一个实例。