所以我想顯示一個被Javascript抓到的url。它返回到JS的形式http://i.mygreatsite.com,但我想削減方案關,使之清潔,並有實際的代碼看起來像如何使用Javascript刪除方案後的超鏈接樣式?
<a href=http://i.mygreatsite.com>i.mygreatsite.com</a>
我試着這樣做之前,我不得不設置一些網址上的特殊屬性,即將目標設置爲空白,以便在新選項卡中打開,並將超鏈接的顏色更改爲黑色,因爲頁面上的其他鏈接爲藍色。我去一下這樣的:
init: function() {
this.on("success", function(file, responseText) {
var span = document.createElement('span');
var a = document.createElement('a');
a.href = responseText;
a.innerHTML = responseText;
a.setAttribute('target', '_blank');
a.style.color="black";
span.appendChild(a);
span.setAttribute("style", "position: absolute; box-sizing: border-box; -webkit-box-sizing: border-box; bottom: -28px; left: 3px; right: 3px; height: 28px; word-wrap: break-word; line-height: 28px; text-overflow: ellipsis; ");
file.previewTemplate.appendChild(span);
});
}
一切工作與它的罰款,但是當我去刪除我用正則表達式做了它的模式:
repl = responseText.replace(/(https?:\/\/(\S+))/i, "<a href='$1'>$2</a>");
a.href = repl;
a.innerHTML = repl;
a.setAttribute('target', '_blank');
a.style.color="black";
現在的模式被刪除,但沒有我之前設置的屬性之前在那裏工作的屬性現在在那裏。該URL是藍色的,並在同一個標籤中打開。我在這裏錯過了什麼嗎?謝謝。
不知道爲什麼奇怪的行爲,可能是因爲您在標籤設置既href和您的innerHTML。正則表達式很有趣,但在這種情況下,爲什麼不將href設置爲原始響應文本,因爲這是鏈接的URL,而innerhtml到responsetext.slice(8,responsetext.length)< - 這將切片的前8個字符字符串,因此刪除https:// –
我也需要它刪除http://,而不僅僅是https:// –
啊k,但我認爲問題在於您要在字符串中製作完整標記。我認爲你需要將href設置爲URL ='h ttp://i.mygreatsite.com',將innerHTML設置爲替換文本'i.mygreatsite.com'。你現在的做法是將它們設置爲:i.mygreatsite.com,這樣你就可以得到一個非常奇怪的構造,可能是href標記中的一個href標記,瀏覽器將試圖以可能意想不到的方式理解這一點 –