Jquery Tinymce拼写检查实现
我有一个经典的ASP页面,它具有jquery特性,并且上面有TinyMCE编辑器。我希望能够对编辑器进行拼写检查,但我看到的每个示例都使用PHP或ASP.net 我看到了这一页:但我不熟悉SVN,所以我不确定如何遵循这些步骤,而且我已经读到它可能不适合IE 有没有其他选项来检查我的tinymce编辑器的拼写Jquery Tinymce拼写检查实现,jquery,asp-classic,tinymce,Jquery,Asp Classic,Tinymce,我有一个经典的ASP页面,它具有jquery特性,并且上面有TinyMCE编辑器。我希望能够对编辑器进行拼写检查,但我看到的每个示例都使用PHP或ASP.net 我看到了这一页:但我不熟悉SVN,所以我不确定如何遵循这些步骤,而且我已经读到它可能不适合IE 有没有其他选项来检查我的tinymce编辑器的拼写 非常感谢您的帮助。只需使用插件拼写检查器即可 首先,我不确定这是否可以借用SG 86的答案,所以如果不是 我使用了SG 86的例子,发现您无法直接使用TinyMCE提供的拼写检查功能,但是如
非常感谢您的帮助。只需使用插件拼写检查器即可
首先,我不确定这是否可以借用SG 86的答案,所以如果不是 我使用了SG 86的例子,发现您无法直接使用TinyMCE提供的拼写检查功能,但是如果您使用了论坛用户提供的hack,它确实可以成功地工作
我建议先将googiespell设置为使用asp的简单文本区: googiespell在这里: asp脚本是James Newton在此页面上的asp代理: 所以,一旦你开始工作,这里就是你如何将它与TinyMCE集成的 在javascript设置中,拼写检查器配置:
<script language="javascript">
tinyMCE.init({
theme : "advanced",
mode : "textareas",
plugins : "spellchecker",
theme_advanced_buttons3_add : "spellchecker",
spellchecker_rpc_url : "/googiespell/spell.asp",
spellchecker_languages : "+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv"
});
</script>
指向应用程序上spell.asp文件的位置
用以下代码替换spell.asp的内容:
<%
Dim ByteCount, BinRead
ByteCount = Request.TotalBytes
BinRead = Request.BinaryRead(ByteCount)
rawData = RSBinaryToString(BinRead)
'get language
if instr(rawData, """params"":[""") > 1 then
lang = mid(rawData, InStr(rawData,"[")+2, 2)
else
lang = "en"
end if
if instr(rawData, """method"":""checkWords"",") > 1 then
'return mispelled words
json = mid(rawData, InStrRev(rawData,"["))
json = mid(json, 1, instr(json, "]"))
json = replace(json, """,""", " ")
json = replace(json, """", "")
t = json
r = "<?xml version=""1.0"" encoding=""utf-8"" ?><spellrequest textalreadyclipped=""0"" ignoredups=""0"" ignoredigits=""1"" ignoreallcaps=""1""><text>"_
&t&"</text></spellrequest>"
r = getURL("https://www.google.com/tbproxy/spell?lang="&lang, r, "","")
out = "{""id"":null,""result"":["
wrds = ""
for each c in filter(split(r,"<c "),"</c>")
'response.write "<br>"&server.htmlencode(c)
o = cint(split(split(c,"o=",2)(1),"""")(1))+1
l = cint(split(split(c,"l=",2)(1),"""")(1))
s = cint(split(split(c,"s=",2)(1),"""")(1))
out = out & """" & mid(t,o,l)& """, "
wrds = "1"
next
if wrds = "" then
out = "{""id"":null,""result"":[],""error"":null}"
else
out = mid(out, 1, len(out)-2) & "],""error"":null}"
end if
response.write out
response.end
else
'return single word corrections
json = mid(rawData, InStrRev(rawData,"["))
json = mid(json, 1, instr(json, "]"))
json = replace(json, """,""", " ")
json = replace(json, "en ", "")
json = replace(json, """", "")
t = json
r = "<?xml version=""1.0"" encoding=""utf-8"" ?><spellrequest textalreadyclipped=""0"" ignoredups=""0"" ignoredigits=""1"" ignoreallcaps=""1""><text>"_
&t&"</text></spellrequest>"
r = getURL("https://www.google.com/tbproxy/spell?lang="&lang, r, "","")
for each c in filter(split(r,"<c "),"</c>")
'response.write "<br>"&server.htmlencode(c)
o = cint(split(split(c,"o=",2)(1),"""")(1))+1
l = cint(split(split(c,"l=",2)(1),"""")(1))
s = cint(split(split(c,"s=",2)(1),"""")(1))
c = textbetween(">", c, "<")
'{"id":null,"result":["Titmice","Times","Tines","Tinnies","Timmy\'s"],"error":null}
out = "{""id"":null,""result"":["
wrds = ""
for each w in split(c,vbTab)
out = out & """" & w & """, "
wrds = "1"
next
if wrds = "" then
out = "{""id"":null,""result"":[],""error"":null}"
else
out = mid(out, 1, len(out)-2) & "],""error"":null}"
end if
next
response.write out
response.end
end if
if t=empty then t = request.form() 'GoogieSpell is going to put the text in the POST data.
'show the reply from google for the POST data.
response.write getURL("https://www.google.com/tbproxy/spell?lang="&lang, t, "","")
Function TextBetween(sThis, sAnd, sThat)
on error resume next
TextBetween = split(split(sAnd,sThis,2,1)(1),sThat,2,1)(0)
end function
Function RSBinaryToString(xBinary)
Dim Binary
If vartype(xBinary)=8 Then Binary = MultiByteToBinary(xBinary) Else Binary = xBinary
Dim RS, LBinary
Const adLongVarChar = 201
Set RS = CreateObject("ADODB.Recordset")
LBinary = LenB(Binary)
If LBinary>0 Then
RS.Fields.Append "mBinary", adLongVarChar, LBinary
RS.Open
RS.AddNew
RS("mBinary").AppendChunk Binary
RS.Update
RSBinaryToString = RS("mBinary")
Else
RSBinaryToString = ""
End If
End Function
function getURL(aURL, anyPostData, anyUserName, anyPassword)
DIM objSrvHTTP,web,method,s
on error resume next
s=""
set objSrvHTTP = Server.CreateObject ("Msxml2.ServerXMLHTTP.3.0")
if anyPostData=empty then
objSrvHTTP.open "GET",aURL, true, anyUsername, anyPassword
else
objSrvHTTP.open "POST",aURL, true, anyUsername, anyPassword
objSrvHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
end if
objSrvHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
objSrvHTTP.send anyPostData
objSrvHTTP.waitForResponse 7
select case objSrvHTTP.readyState
case 0 'object created, but no URL opened
debug "getURL("&aURL&", "&anyPostData&", "&anyUserName&", "&anyPassword&"): Object Created, no URL opened"
err.raise 1, "Object Created, no URL opened"
exit function
case 1 'loading: URL opened, but no data sent
debug "getURL("&aURL&", "&anyPostData&", "&anyUserName&", "&anyPassword&"):URL opened, no data sent"
err.raise 2, "URL opened, no data sent"
exit function
case 2 'loaded: data sent, status and headers available, no response recieved.
debug "getURL("&aURL&", "&anyPostData&", "&anyUserName&", "&anyPassword&"):No response from remote host"
err.raise 3, "No response from remote host"
exit function
case 3 'interactive: some data recieved. responseBody and responseText will return partial results.
debug "getURL("&aURL&", "&anyPostData&", "&anyUserName&", "&anyPassword&"):Partial response recieved:"
debug server.htmlencode(objSrvHTTP.responseText)
s = objSrvHTTP.responseText
err.raise 4, "Partial response recieved"
case 4 'complete:
s = objSrvHTTP.responseText
end select
getURL = s
end function
%>
0那么
RS.Fields.Append“mBinary”,adLongVarChar,LBinary
美国公开赛
艾德纽卢比
RS(“mBinary”).AppendChunk二进制
RS.更新
RSBinaryToString=RS(“MB”)
其他的
RSBinaryToString=“”
如果结束
端函数
函数getURL(aURL、anyPostData、anyUserName、anyPassword)
DIM objSrvHTTP、web、方法、s
出错时继续下一步
s=“”
设置objSrvHTTP=Server.CreateObject(“Msxml2.ServerXMLHTTP.3.0”)
如果anyPostData=空,则
objSrvHTTP.open“GET”、aURL、true、anyUsername、anyPassword
其他的
objSrvHTTP.open“POST”,aURL,true,anyUsername,anyPassword
objSrvHTTP.setRequestHeader“内容类型”、“应用程序/x-www-form-urlencoded”
如果结束
objSrvHTTP.setRequestHeader“用户代理”、“Mozilla/4.0(兼容;MSIE 5.5;Windows NT 5.0)”
objSrvHTTP.send anyPostData
objSrvHTTP.waitForResponse 7
选择case objSrvHTTP.readyState
已创建案例0对象,但未打开URL
调试“getURL(&aURL&“,&anyPostData&“,&anyUserName&“,&anyPassword&“):已创建对象,未打开URL”
err.raise 1,“已创建对象,未打开URL”
退出功能
案例1'加载:URL已打开,但未发送数据
调试“getURL(&aURL&“,&anyPostData&“,&anyUserName&“,&anyPassword&”):URL已打开,未发送数据
错误2,“URL已打开,未发送数据”
退出功能
案例2'已加载:已发送数据,状态和标题可用,未收到响应。
调试“getURL(&aURL&“,&anyPostData&“,&anyUserName&“,&anyPassword&“):远程主机无响应”
错误3,“远程主机无响应”
退出功能
案例3‘交互:收到一些数据。responseBody和responseText将返回部分结果。
调试“getURL(&aURL&“,&anyPostData&“,&anyUserName&“,&anyPassword&”):收到部分响应:
调试服务器.htmlencode(objSrvHTTP.responseText)
s=objSrvHTTP.responseText
错误4,“收到部分响应”
案例4'完成:
s=objSrvHTTP.responseText
结束选择
getURL=s
端函数
%>
编辑-为清晰起见,添加了我的标题:
<script type="text/javascript" src="tinymce/jscripts/tiny_mce/tiny_mce.js" ></script>
<script type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "advanced",
plugins : "spellchecker",
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,undo,redo,|,copy,paste,|,spellchecker",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
spellchecker_rpc_url : "googiespell/spell.asp", <--! Needs to point to where the spell.asp script is located on your server. -->
spellchecker_languages : "+English=en,Spanish=es"
});
</script>
tinyMCE.init({
模式:“文本区域”,
主题:“高级”,
插件:“拼写检查器”,
主题高级按钮1:“粗体、斜体、下划线、删除线、撤消、重做、复制、粘贴、拼写检查”,
主题\高级\按钮2:“”,
主题\高级\按钮3:“”,
拼写检查器\u rpc\u url:“googiespell/spell.asp”,
拼写检查语言:“+英语=英语,西班牙语=英语”
});
问题()中提到的JSpellChecker提供了一些TinyMCE拼写检查器的实现和使用示例,但它们都是基于java的实现(因此您需要执行一些额外的步骤使其在您的环境中工作)
它应该可以与IE配合使用,但理想情况下,它应该与要使用它的页面位于同一主机上,因为浏览器(不仅仅是IE)可能会阻止跨域ajax请求
如果不想处理SVN,可以在此处下载代码快照()。它还包含TinyMCE提供的用法示例
spellchecker_rpc_url : "/myspellchcker",
<--! Needs to point to where the myspellchecker script is located on your server. -->
谢谢你的回复。我注意到了这一点,但看到PHP被列为需求之一。我仍然可以使用经典ASP?@Cineno28-看起来TinyMCE不直接支持经典ASP进行拼写检查。它使用PHP模块进行拼写检查。但是,对于文本框集成来说,它确实可以很好地工作。这里有一个链接,指向他们的论坛帖子,其中有一些你可能会用到的黑客:@Cineno28-我继续尝试了该链接提供的示例,并且成功地使用了TinyMCE拼写检查器。@RogueSpear00我不确定在哪里响应,所以我假设它在这里,因为SG 86首先推荐了解决方案?我得到了与James Newton的ASP代理一起工作的好机会。然后,我尝试添加tinymce和海报提供的新ASP脚本,但出现了错误。我假设它与getURL(“,r,”,”)有关。既然这是在我的服务器上,我应该将它更改为getURL(“拼写.asp?lang=“&lang,r,”,”)或其他什么吗?我试过了,但它仍然不起作用。@RogueSpear00也一样,当它说“编辑拼写.asp使其看起来像这样”时“它是说用该代码替换整个文件,还是将其放在其中?再次感谢您的帮助。@RogueSpear00对不起,我以为您会看到下面的注释。我让它部分工作,
spellchecker_rpc_url : "/myspellchcker",
<--! Needs to point to where the myspellchecker script is located on your server. -->
#checker is a pyenchant object - uses enchant which wraps aspell in our case . The code was taken from django's implementation for tinymce spellchecker.
def spell_check(self):
"""Returns a Response that implements the TinyMCE spellchecker protocol.
"""
try:
raw = self.REQUEST['BODY']
input = json.loads(raw)
id = input['id']
method = input['method']
params = input['params']
lang = params[0]
arg = params[1]
if not enchant.dict_exists(str(lang)):
raise Exception("dictionary not found for language '%s'" % lang)
checker = self.checker
if method == 'checkWords':
result = [word for word in arg if not checker.check(word)]
elif method == 'getSuggestions':
result = checker.suggest(arg)
elif method == 'learnWord' :
result = checker.add(arg)
else:
raise Exception("Unkown spellcheck method: '%s'" % method)
output = {
'id': id,
'result': result,
'error': None,
}
except Exception:
return Exception("Error running spellchecker")
self.REQUEST.RESPONSE.setHeader('Content-Type','application/json')
return json.dumps(output)