我正在開發一個瀏覽器插件,該插件用<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”的第一個實例。