Opened 13 years ago
Closed 11 years ago
#8659 closed Bug (fixed)
SCAYT + SyntaxHighlighter conflict
Reported by: | Anna Tomanek | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | UI : Spell Checker | Version: | 3.0 |
Keywords: | Cc: | WebSpellChecker.net |
Description
As reported in: http://cksource.com/forums/viewtopic.php?f=11&t=24453
Problem:
On a page which uses Alex Gorbatchev's SyntaxHighlighter and has a CKEditor instance with SCAYT enabled, a script error is thrown when pasting into the editor.
In Firefox, the error is similar to: "e is undefined", shCore.js line 17.
In IE, the error is similar to "Unable to get value of the property 'valueOf': object is null or undefined", http://svc.webspellchecker.net/scayt26/_base.xd.js, line 3268.
Cause:
SyntaxHighlighter uses the XRegExp library, which replaces the native String.prototype.replace(search, replacement) function. SCAYT seems to call the replace function without passing the replacement parameter. The new replace function attempts to call valueOf on the replacement parameter, which throws the error.
This appears to be a bug in SCAYT; however, the native replace function will convert an undefined parameter to the string "undefined", which would mask this problem.
Workaround:
Override the new replace function to cope with an undefined replacement parameter:
jQuery(function(){ var oldReplace = String.prototype.replace; String.prototype.replace = function (search, replacement) { if ("undefined" === typeof(replacement)) { replacement = ""; } return oldReplace.call(this, search, replacement); }; });
The affected line in the SCAYT code is:
if(node.nodeName.match(t.nextNode.blockElementsRegex) &&this.text.replace(/\s/).length!=""){
This should be:
if(node.nodeName.match(t.nextNode.blockElementsRegex) &&this.text.replace(/\s/,"").length!=0){
Change History (3)
comment:1 Changed 13 years ago by
comment:2 Changed 13 years ago by
Status: | new → confirmed |
---|---|
Version: | 3.6.2 → 3.0 |
comment:3 Changed 11 years ago by
Resolution: | → fixed |
---|---|
Status: | confirmed → closed |
WebSpellChecker.net team confirms the problem and offered resolution. The fix will be released during the next release of SCAYT core which will be scheduled during next few weeks.