Tinymce拼写检查实现
我有一个经典的ASP页面,具有jQuery的功能,并有它的TinyMCE编辑器。我希望能够拼写检查编辑器,但我看到的每个示例都使用PHP或ASP.net。Tinymce拼写检查实现
我遇到了这个页面:http://achorniy.wordpress.com/2009/08/11/tinymce-spellchecker-in-java/但是我对SVN并不熟悉,所以我不太确定如何按照步骤操作,并且我读过它可能不适用于IE。
有没有其他选项可以拼写检查我的tinymce编辑器?
非常感谢您的帮助。
感谢您的答复。我注意到,但看到PHP被列为需求之一。我仍然可以使用这与经典的ASP? – Cineno28 2012-04-11 16:03:32
@ Cineno28 - 看起来TinyMCE并不直接支持经典的ASP进行拼写检查。它使用拼写检查器的PHP模块。但是,对于文本框集成它确实工作正常。这里是他们的论坛帖子的链接,它有一些黑客,你可以使用:http://www.tinymce.com/forum/viewtopic.php?id=15662 – RogueSpear00 2012-04-11 20:44:39
@ Cineno28 - 我继续前进,并尝试提供的例子从那个链接中,我成功地使用了TinyMCE拼写检查器。 – RogueSpear00 2012-04-11 20:57:16
首先,我不知道这是否是好的,甚至捎带关闭SG 86的回答,因此,如果它不是不chastize我...
我用SG 86的例子,发现你不能直接使用TinyMCE提供的拼写检查功能,但是如果你使用了论坛用户提供的黑客,它确实能够成功工作。
- 安装和设置TinyMCE的从论坛用户
- 按照说明
所有信用卡此解决方案与TinyMCE的应到原论坛用户@http://tinymce.com/forum/viewtopic.php?id=15662
我建议设置googiespell首先与asp一起使用简单的textarea: googiespell这里:http://orangoo.com/labs/GoogieSpell/
ASP脚本此页面上有詹姆斯·牛顿的ASP代理:http://orangoo.com/labs/GoogieSpell/Documentation/ 所以一旦你得到了这个在这里工作是你如何用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>
编辑线:
spellchecker_rpc_url : "/googiespell/spell.asp",
以指向您的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
%>
编辑 - 添加我的头为清楚:
<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>
我不知道这个网站如何提醒评论的海报,所以我只是在这里发布,在SG 86的帖子下面有评论,以防他们没有看到。再次感谢你的帮助。我觉得我正在接近这个工作。 – Cineno28 2012-04-16 13:08:50
什么不起作用?我回答了SG的回答中的上述问题。这没有用吗?我从上周阅读了这些评论并作出回应。 – RogueSpear00 2012-04-16 15:44:40
不工作的部分是当我将James Newton的ASP代理替换为新的ASP代码时。我不确定是否应该用这个新代码编辑他的代理,或者完全用它替换它。我试图完全替换它,并且我在编辑器上得到了拼写检查器,但是它没有发现任何拼写纠正可以用牛顿的原始代码纠正,也没有锡姆蒂奇。 – Cineno28 2012-04-16 16:46:07
JSpellChecker的问题(http://achorniy.wordpress.com/2009/08/11/tinymce-spellchecker-in-java/)为TinyMCE的拼写检查程序的几个实现提到和使用示例,但它们都是基于java的实现(因此您需要执行一些额外的步骤才能使其在您的环境中工作)
它应该在IE中正常工作,但理想情况下应该托管在与您要使用它的页面相同的主机,因为浏览器(不仅是IE)可能会阻止跨域的Ajax请求。
如果你不想处理SVN,你可以在这里下载代码快照(http://sourceforge.net/p/jspellchecker/code/11/tarball)。它还包含用法示例
TinyMCE的提供
spellchecker_rpc_url : "/myspellchcker",
<--! Needs to point to where the myspellchecker script is located on your server. -->
下面是Python代码(写在ASP等效):
#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)
你得到这个工作? – RogueSpear00 2012-04-13 13:27:44
@ RogueSpear00对不起,我以为你会看到下面的注释。我已经部分工作了,但在对James Newtons的ASP代理进行更新后,它无法正常工作。看到我的评论如下。感谢您的跟踪!我希望很快得到解决 – Cineno28 2012-04-16 13:07:15