#11
|
|||
|
|||
改好了, 還是沒用
<script>那一段我是放在<head>裡, 還是應該放在其他地方? |
#12
|
|||
|
|||
順便在問一下, 如果剛好碰到html code裡面剛好有這個字串, 那會發生啥事?
|
#13
|
|||
|
|||
我發現你網頁內有個 clock.js 用到了 window.onload,所以 body 的 onload 就失效了,你可以把
代碼:
<script> replaceKeyword(); </script> 另外建議這樣改: 代碼:
var re = new RegExp(keywords[i][0].replace(/\s+/, "\\s+"), "gi"); new RegExp(m[j], "gi"); 如果遇到 html code 裡面有這個字串,或不想被修改的字串也被修改了,那就要再看看是什麼狀況,再修改 regular expressions 讓搜尋字串更精確即可。 |
#14
|
|||
|
|||
work了, 可是也出現一個大問題
如果是原本這個字串所在的句子裡本身就帶有link, 那會被取代掉, 原本的link會失效. 舉例來說: 在這個scipt裡設定把google這個字串變成www.google.com的link 剛好我的頁面裡本來就有一個link是 google adsense指到https://www.google.com/adsense/?hl=zh_TW 套用這個script後就會變成google指到www.google.com, adsense就沒有link了, 原本的link就消失了 |
#15
|
|||
|
|||
像這種類似的狀況會很多,需要先給個明確的定義,我先假設若字串後面跟著一個 < 表示已經有連結,就不取代,程式如下:
代碼:
function replaceKeyword(objID) { var text = ""; if (objID != null) { text = document.getElementById(objID).outerHTML; } else { text = document.body.innerHTML; } for (var i = 0; i < keywords.length; i++) { var re = new RegExp("(" + keywords[i][0].replace(/\s+/, "\\s+") + ")([^<])", "gi"); var m = re.exec(text); if (m != null) { text = text.replace(re, "<a href='" + keywords[i][1] + "'>$1</a>$2"); m = re.exec(text); } } if (objID != null) { document.getElementById(objID).outerHTML = text; } else { document.body.innerHTML = text; } } |
#16
|
|||
|
|||
高手过招。果然飞沙走石。小弟只能当睁眼瞎了:) 强!
|
#17
|
|||
|
|||
可不可以變成如果字串後面不管多遠第一個接到的<是</a>就不取代, 這樣會不會比較好?
因為可能字串只會在一個link中間 |
#18
|
|||
|
|||
代碼:
function replaceKeyword(objID) { var text = ""; if (objID != null) { text = document.getElementById(objID).outerHTML; } else { text = document.body.innerHTML; } for (var i = 0; i < keywords.length; i++) { var re = new RegExp("(" + keywords[i][0].replace(/\s+/, "\\s+") + ")([^<.]*)(<(/[^A]|[^/]))", "gi"); var m = re.exec(text); if (m != null) { text = text.replace(re, "<a href='" + keywords[i][1] + "'>$1</a>$2$3"); m = re.exec(text); } } if (objID != null) { document.getElementById(objID).outerHTML = text; } else { document.body.innerHTML = text; } } <a href=""><b>Keywords</b></a> 如果以這樣的思考方式下去做,可能會常常會碰到例外狀況,常常需要修改,我建議可以改用另一種方式,就是自己把想要轉為連結的字串用 [] 包起來,當遇到關鍵字被 [] 包起來時,比較容易確認是我們要改的地方。 |
#19
|
|||
|
|||
還是破功了, 只要有人去edit post, 就會破功.
很好奇clicksor的廣告到底是怎麼弄的, 不會是一個條件一個條件列的吧? 它只會替換非連結部份的字串.. |