【发布时间】:2021-03-24 01:18:46
【问题描述】:
首先我想说,最初创建这部分代码的人已不在团队中。
我们正在创建一个开发工具来为我们的游戏管理和开发服务器,它有自己的编程语言。
我正在使用 JavaFX 和 WebView 来生成开发工具的聊天区域,以便与其他开发人员和员工进行交流。但是我想要它,所以当你发布一个链接时,它实际上显示为链接而不是纯文本。我尝试过诸如 AutoLinker 之类的东西,但没有成功。这是 webview 的 HTML 部分。
<script src=".././scripts/Autolinker.js"></script>
<script type="text/javascript">
app = null;
const messages = document.getElementById("messages");
function addMessage(message, options) {
const p = document.createElement("p");
const c = message.indexOf(":");
const modifiedMessage = message; //replaceURLWithHTMLLinks(message);
const ridBrackets = options.replace(/[\[\]']/g, "");
const tokenize = ridBrackets.split(",", 2);
const rcChatOptions = tokenize;
const mFontColor = tokenize[rcChatOptions.BFONTCOLOR];
let timeStampFormat = tokenize[rcChatOptions.TIMESTAMP];
if(c > -1) {
const u = document.createElement("span");
const a = document.createElement("a");
u.className = "user";
if(mFontColor != null) {
u.style.color = mFontColor;
} else {
u.style.color = "#00c02b";
}
//Turn plain text links into actual links
u.appendChild(document.createTextNode(Autolinker.link(modifiedMessage.substring(0, c + 1))));
p.appendChild(u);
if(document.selectedfont != null) {
p.style.fontFamily = document.selectedfont;
}
p.appendChild(document.createTextNode(modifiedMessage.substring(c + 1)));
} else {
p.appendChild(document.createTextNode(modifiedMessage));
}
// Append message and scroll to bottom (if at bottom)
const scrollTop = document.body.scrollTop;
const scrolledToBottom = scrollTop + window.innerHeight >= document.body.scrollHeight;
if(scrolledToBottom) {
messages.appendChild(p);
window.scrollTo(document.body.scrollLeft, document.body.scrollHeight - window.innerHeight);
} else {
messages.appendChild(p);
}
messages.style.backgroundColor = "transparent";
}
</script>
我删除了我认为只是分散注意力的部分代码。
这是工具的样子
https://share.getcloudapp.com/kpuNDB4m
这就是使用 AutoLinker 的样子
https://share.getcloudapp.com/8LunomDL
(所以自动链接器正在完成它的工作,它仍然没有呈现为超链接)
【问题讨论】:
-
DOM TextNodes 只接受文本。所以问题不在于自动链接器,而是您正在处理纯文本 DOM 节点这一事实。您需要创建
<a>标记并将url 放入锚标记的href属性中。
标签: javascript html javafx webview javafx-11