فهرست منبع

* Don't escape text inside script/style elements, third part of Mantis #22434.

git-svn-id: trunk@33251 -
sergei 9 سال پیش
والد
کامیت
a6ea383b0e
1فایلهای تغییر یافته به همراه6 افزوده شده و 1 حذف شده
  1. 6 1
      packages/fcl-xml/src/htmwrite.pp

+ 6 - 1
packages/fcl-xml/src/htmwrite.pp

@@ -46,6 +46,7 @@ type
   private
   private
     FStream: TStream;
     FStream: TStream;
     FInsideTextNode: Boolean;
     FInsideTextNode: Boolean;
+    FInsideScript: Boolean;
     FBuffer: PChar;
     FBuffer: PChar;
     FBufPos: PChar;
     FBufPos: PChar;
     FCapacity: Integer;
     FCapacity: Integer;
@@ -324,6 +325,7 @@ begin
       ElFlags := HTMLElementProps[j].Flags;
       ElFlags := HTMLElementProps[j].Flags;
       if j = etMeta then
       if j = etMeta then
         meta := True;
         meta := True;
+      FInsideScript := (j=etScript) or (j=etStyle);
       break;
       break;
     end;
     end;
 
 
@@ -371,7 +373,10 @@ end;
 
 
 procedure THTMLWriter.VisitText(node: TDOMNode);
 procedure THTMLWriter.VisitText(node: TDOMNode);
 begin
 begin
-  ConvWrite(TDOMCharacterData(node).Data, TextSpecialChars, {$IFDEF FPC}@{$ENDIF}TextnodeSpecialCharCallback);
+  if FInsideScript then
+    WrtStr(TDOMCharacterData(node).Data)
+  else
+    ConvWrite(TDOMCharacterData(node).Data, TextSpecialChars, {$IFDEF FPC}@{$ENDIF}TextnodeSpecialCharCallback);
 end;
 end;
 
 
 procedure THTMLWriter.VisitCDATA(node: TDOMNode);
 procedure THTMLWriter.VisitCDATA(node: TDOMNode);