2009-08-03 1 views
0

Firefox의 fckeditor에 문제가 있습니다. 사용자가 페이지로 이동하면 숨겨진 입력 요소에 html (인코딩 된)이 저장됩니다. 미리 정의 된 fckeditor 자바 스크립트 이벤트를 호출하여 내 편집기에 숨겨진 ContentBody 요소의 HTML을 채 웁니다.Firefox의 숨겨진 입력 요소

 function FCKeditor_OnComplete(editorInstance) 
     { 
      editorInstance.InsertHtml(""); 
      var sample = document.getElementById("ContentBody").value; 
      editorInstance.InsertHtml(sample); 
     } 

이것은 자동으로 IE에서 원하는 텍스트로 편집기를 채 웁니다. 그러나 Firefox에서는 그렇지 않습니다. 방화 내게 오류 준다 :} {this._Docume ... eateFromRange (this._Document이)}

A가 FCKW3CRange = 함수 (A) 널 [이 에러 브레이크] VAR이다 \ R \ n

파이어 버그를 사용하면 Firefox를 사용할 때 FCKeditor_OnComplete() 이벤트 메서드가 실행되지 않는다고 판단 할 수 있습니다. 그러나 그것은 IE에서입니다. 이 방법을 두 브라우저에서 모두 사용할 수있는 방법에 대한 아이디어가 있습니까?

ContentBody에 대한 HTML은 다음과 같습니다 <input type="hidden" name="ContentBody" id="ContentBody" value="<%=Model.Article%>" />

+0

는 "ContentBody"에 대한 HTML 코드를 작성하시기 바랍니다 –

+0

위를 참조하시기 바랍니다 parent.document.getElementById를 호출하는 자바 스크립트를 필요로 보인다. 도와 줘서 고맙다! – splatto

+1

편집기를 어떻게 인스턴스화합니까? 제 말은 "새로운 FCKeditor"는 전체 문서가로드 된 후에 만 ​​실행됩니다. –

답변

0

... 당신의 FCKeditorOnComplete가 물리적으로 위치해 경우 함께 할 수있는 뭔가입니다. 우선 숨겨진 입력 요소로 인코딩 된 HTML 문자열을 저장 :

<input type="hidden" name="ContentBody" id="ContentBody" value="<%=Model.Body%>" /> 

이 함수가 호출되는 경우 때 완성 된로드에서 FCKEDITOR 인스턴스입니다.

function FCKeditor_OnComplete(editorInstance) 
{ 
    var oEditor = FCKeditorAPI.GetInstance(editorInstance.Name); 
    var content = parent.document.getElementById("ContentBody").value; 
    var EditedContent = content.replace(/\u201C/g, '"'); 
    oEditor.InsertHtml(EditedContent); 
    content = null; 
} 

그것은 파이어 폭스()

0

확실히 태그가 속성 ID = "ContentBody"당신이 있습니까? name = "ContentBody"속성을 사용할 수 있습니다. IE는이를 getElementById의 ID 속성으로 (기술적으로 잘못) 해석합니다. Firefox는 id를 올바르게 사용하는 경우에만 찾습니다.

0

오류가 발생하여 스택을 걸어 가면 A가 설정되지 않은 이유는 무엇입니까? 또는,

document.getElementById("ContentBody").value

에 휴식과보다 구체적인 원인을 찾고, 스택을 걸어.

+1

질문에서 파이어 버그가 제공하는 오류를 제공했습니다. "방화 광이 내게 오류를 준다 ...." – splatto

+0

죄송합니다. "FireFOX에서 오류가 발생합니다" – Josh

+0

수정 된 답변을 참조하십시오. – Josh

1

재미 있습니다. 나는 FCKeditorOnComplete를 사용하지 않았지만 (WMD를 행복하게 만들려면 밑줄을 제거해야만했습니다), 그러나 좋은 훅처럼 보입니다. 아래에 FCKEditor 함수의 중단 점을 넣으려고 했습니까? Firefox와 함께 거기에 도착합니까? 아마 새 프로젝트에서 작업하는 동안 나는이 지난 달에 솔루션에 온

function WaitForActive(editorInstance, newStatus) 
267...{ 
268 if (newStatus == FCK_STATUS_ACTIVE) 
269 ...{ 
270  if (FCKBrowserInfo.IsGecko) 
271   FCKTools.RunFunction(window.onresize) ; 
272 
273  _AttachFormSubmitToAPI() ; 
274 
275  FCK.SetStatus(FCK_STATUS_COMPLETE) ; 
276 
277  // Call the special "FCKeditor_OnComplete" function that should be present in 
278  // the HTML page where the editor is located. 
279  if (typeof(window.parent.FCKeditor_OnComplete) == 'function') 
280   window.parent.FCKeditor_OnComplete(FCK) ; 
281 } 
282}