这个示例 CKEditor JavaScript 函数有什么作用
What does this sample CKEditor javascript function do?
MVC5
使用这个 CKEditor 文档中的信息,我最终能够集成来自 MVC 方法/视图的图像选择过程,该过程显示可以使用 CKEditor 插入文本区域的可用图像列表。
虽然最终的解决方案非常简单,但整个过程并不是特别直观。 我最终会发布我的解决方案,因为我确信许多相对较新的 MVC 编码人员(例如我自己)正在为此功能寻找简单直接的解决方案。 但与此同时,
下面的代码在上面的链接中显示了示例 2 中的相关行,略有重新排列。
<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()。 我最终绕过了它,并使用已传递给我的图像选择器方法的确切参数输入了变量 funcNum。 一旦我这样做了,CKEditor的示例代码就工作得很好。
但是getUrlParam()函数在做什么呢? 我只是名义上理解正则表达式,而这个完全逃脱了我。 谁能解释为什么甚至建议它?
getUrlParam
采用paramName
(如http://google.com/search.php?q=term
中所q
),定义一个与param
匹配的RegExp
并将其值捕获到组1(match[1]
,例如 term
),由该方法返回。window.location.search
获取查询字符串部分(例如 ?q=term
) 中的当前窗口 URL。
我会用更简单的正则表达式定义替换
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")
通话.
相关文章:
- 基于窗口宽度jquery的函数的替代方法是什么
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- 在递归生成器函数中,yield后面的*(星号/星号)语法意味着什么
- 在什么情况下需要同时使用compile&链接函数的角度
- 当一个重要的构造函数参数丢失时应该发生什么
- 当绑定到AngularJS中的函数时,会在后台发生什么
- 缓存!saveLocations()和addLocation()函数有什么区别
- 函数(i,val)在javascript中是什么意思
- 鉴于 for..在构造中,库提供的函数(如 jQuery.map() 或 _.each())有什么用
- 如果 JS 中的函数是一流的,那么在定义它们之前允许调用它们是什么
- undercore.js_.tap()函数什么是方法链
- 淘汰抛出消息:类型错误:
不是一个函数.什么意思 - JavaScript 函数什么是范围以及为什么使用 $
- jQueryAJAX函数什么都没做
- 用".then"链接bluebird中的异步函数.什么是最好的方法
- 为什么这个函数什么也不返回?
- 将参数传递给函数.什么'It’他错了
- 我有节点JS错误的日期函数什么地方出了问题