这个示例CKEditor javascript函数做什么?
MVC5 使用本文中的信息,我最终能够集成来自MVC方法/视图的图像选择过程,该方法/视图显示可用图像的列表,这些图像可以使用CKEditor插入文本区域 虽然最终的解决方案非常简单,但整个过程并不是特别直观。我最终会发布我的解决方案,因为我确信许多相对较新的MVC程序员,比如我自己,都在为这个功能寻找简单明了的解决方案。但与此同时 下面的代码显示了上面链接处示例2的相关行,稍微重新排列这个示例CKEditor javascript函数做什么?,javascript,regex,asp.net-mvc,ckeditor,ckeditor.net,Javascript,Regex,Asp.net Mvc,Ckeditor,Ckeditor.net,MVC5 使用本文中的信息,我最终能够集成来自MVC方法/视图的图像选择过程,该方法/视图显示可用图像的列表,这些图像可以使用CKEditor插入文本区域 虽然最终的解决方案非常简单,但整个过程并不是特别直观。我最终会发布我的解决方案,因为我确信许多相对较新的MVC程序员,比如我自己,都在为这个功能寻找简单明了的解决方案。但与此同时 下面的代码显示了上面链接处示例2的相关行,稍微重新排列 <body> <button onclick="returnFileUrl()">
<body>
<button onclick="returnFileUrl()">Select File</button>
</body>
<script>
function getUrlParam( paramName ) { // Helper function to get parameters from the query string.
var reParam = new RegExp( '(?:[\?&]|&)' + paramName + '=([^&]+)', 'i' );
var match = window.location.search.match( reParam );
return ( match && match.length > 1 ) ? match[1] : null;
}
function returnFileUrl() { // Simulate user action of selecting a file to be returned to CKEditor
var funcNum = getUrlParam( 'CKEditorFuncNum' );
var fileUrl = '/path/to/file.txt';
window.opener.CKEDITOR.tools.callFunction( funcNum, fileUrl );
window.close();
}
</script>
选择文件
函数getUrlParam(paramName){//Helper函数从查询字符串中获取参数。
var reParam=new RegExp('(?:[\?&]|&')+paramName+'=([^&]+'),'i');
var match=window.location.search.match(reParam);
返回(match&&match.length>1)?匹配[1]:空;
}
函数returnFileUrl(){//模拟用户选择要返回到CKEditor的文件的操作
var funcNum=getUrlParam('CKEditorFuncNum');
var fileUrl='/path/to/file.txt';
window.opener.CKEDITOR.tools.callFunction(funcNum,fileUrl);
window.close();
}
我从未想过如何使用getUrlParam()。我最终绕过了它,通过变量funcNum输入了传入图像选择器方法的确切参数。当我这么做的时候,来自CKEditor的示例代码工作得很好
但是getUrlParam()函数在做什么?我只是名义上理解RegExp,而这一点我完全无法理解。有人能解释一下为什么会建议使用它吗?在
http://google.com/search.php?q=term
),定义与参数匹配的RegExp
,并将其值捕获到组1中(match[1]
,例如术语
)这是由方法返回的。window.location.search
获取JS中当前窗口URL的查询字符串部分(例如?q=term
)
我会用一个更简单的
var reParam = new RegExp( '[?&]' + paramName + '=([^&]+)', 'i');
生成的正则表达式看起来像[?&]q=([^&]+)
匹配:
[?&]
-要么是?
要么是&
(在您的原始代码中,它是(?:[\?&]|&)
,与?
或&
匹配,要么是&
,因此,我建议缩短)
q=
-字符的文字序列q=
([^&]+)
-组1捕获一个或多个字符,而不是&
在VB.NET中,可以使用以下内容:
Private Shared Function getUrlParam(paramName As String) As String
Dim reParam = "(?i)[?&]" & Regex.Escape(paramName) & "=([^&]+)"
Dim match As Match = Regex.Match("http://google.com/index.php?q=term", reParam)
If match.Success = True And match.Value.Length > 1 Then
Return match.Groups(1).Value
Else
Return String.Empty
End If
End Function
然后用Dim res As String=getUrlParam(“q”)
调用我想这是一个模拟,就像它在评论中所说的那样,但是按照他们的例子,它不起作用。所以不是很好的模拟。但撇开这一点不谈,它仍然回避了一个问题:该函数试图实现什么?getUrlParam
采用paramName
(如q
inhttp://google.com/search.php?q=term
),定义一个与参数匹配的RegExp,并将其值捕获到组1中(匹配[1]
,例如术语
)这是由方法返回的window.location.search
获取JS中当前窗口URL的查询字符串部分(例如?q=term
)。我将用一个更简单的var reParam=newregexp('[?&]'+paramName+'=([^&]+'),'I')替换正则表达式定义代码>@Alan,有什么消息吗?我可以把我的解释作为回答吗?我不明白您是否需要这些帮助。@Wiktor,实际上我不理解您的评论,因为我对regex的理解有限,所以我打算花一些时间一步一步地浏览这些符号,尝试按照您的解释进行操作。我不想让你解释每个符号,因为这是我的责任,但如果你想解释,请随意解释。