我正在为我正在设计的论坛网站编写一个实时JavaScript解析器,但我遇到了一个看似简单的打嗝,我无法修复。
我将实时JavaScript解析器改为粗体字,更改颜色,嵌入YouTube视频,甚至嵌套引号!但出于某种原因,它只是不想使用URL(我推断这是因为时期。)
因此,正在解析的文本看起来像典型的bbcode ...... 例如:
[b]this text will be bold[/b]
[youtube]youtube link[/youtube]
[quote=Jake said:]hello world![/quote]
所有这些都有助于产生预期的效果。但是这个:
[url=www.example.com]Link Name[/url]
不起作用!如果我将链接名称替换为它的实际链接,但是当我将链接作为参数包含以便可以重命名(它适用于引号)时,由于链接中的句点,它不起作用。所以,我的问题是,每当输入一个URL时,我怎么能逃避这些时期。
这是我的URL解析代码。
'url': {
openTag: function(params,content) {
var name = content;
var uri = params;
var myUrl = encodeURIComponent(uri);
return '<a href=' + myUrl + '>'+ name +'</a>';
},
closeTag: function(params,content) {
return '';
},
content: function(params,content) {
return '';
}
},
如果我在返回中交换myUrl和Name变量,它可以正常工作,但是我无法编辑URL(比如使URL成为不同的颜色),因为实际的显示部分(Name)成为参数。那么,如何在仍然作为参数的情况下让myUrl工作?
这是引用的代码,它非常相似并且有效。 (但是,如果参数包含句点,就像使用URL一样,它将无效。)
'quoter': {
openTag: function(params,content) {
var myUrl = content;
var name = params;
return '<div><div class="quotetitle">'+ name +' said:</div><div class="quote">' + myUrl + '</div></div>';
},
closeTag: function(params,content) {
return '';
},
content: function(params,content) {
return '';
}
},