Skip to content

Commit 5e6cdad

Browse files
committed
适配studio,优化超链接跳转机制
1 parent ba59a5d commit 5e6cdad

1 file changed

Lines changed: 26 additions & 1 deletion

File tree

  • soloncode-cli/src/main/resources/static/js

soloncode-cli/src/main/resources/static/js/app-ui.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,32 @@ $('#chatImageInput').on('change', function(e) {
251251
});
252252

253253
/* ===== Marked ===== */
254-
if (typeof marked !== 'undefined') { marked.setOptions({ breaks: true, gfm: true }); }
254+
function escapeHtmlAttr(value) {
255+
return String(value == null ? '' : value)
256+
.replace(/&/g, '&')
257+
.replace(/"/g, '"')
258+
.replace(/</g, '&lt;')
259+
.replace(/>/g, '&gt;');
260+
}
261+
262+
function createMarkdownRenderer() {
263+
var renderer = new marked.Renderer();
264+
265+
renderer.link = function (token) {
266+
var href = token && typeof token === 'object' ? token.href : token;
267+
var title = token && typeof token === 'object' ? token.title : '';
268+
var text = token && typeof token === 'object' ? token.text : '';
269+
var safeHref = href || '';
270+
var safeTitle = title ? ' title="' + escapeHtmlAttr(title) + '"' : '';
271+
var safeText = text || '';
272+
273+
return '<a href="' + escapeHtmlAttr(safeHref) + '" target="_blank" rel="noopener noreferrer"' + safeTitle + '>' + safeText + '</a>';
274+
};
275+
276+
return renderer;
277+
}
278+
279+
if (typeof marked !== 'undefined') { marked.setOptions({ breaks: true, gfm: true, renderer: createMarkdownRenderer() }); }
255280
var _mdCache = new Map();
256281
var _MD_CACHE_MAX = 100;
257282
function renderMd(text) {

0 commit comments

Comments
 (0)