JavaScript API FCKeditor выдает код «Ошибка безопасности»: «1000» при попытке SetHTML ()

1

После открытия веб-страницы с одним окном FCKeditor в нем я получаю экземпляр:

i = FCKeditorAPI.GetInstance( "txtText" )

Это работает. Мне также разрешено:

i.GetHTML() #=> <div class=".... etc., correct output

Но при попытке

i.SetHTML( "<h1>Quux</h1>" )

Я получаю:

[Exception... "Security error" code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_... etc. ]

У меня есть неопределенное ощущение, что в прошлом я смог изменить содержимое окна FCKeditor с помощью SetHTML(), но я не совсем уверен. Что делать?

В ответ на комментарий мой HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<meta http-equiv="Content-language" content="cs" />
<meta http-equiv="expires" content="-1" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="private" />
<title>Foo | Bar | WebMaker | FOO.CZ</title>
<style type="text/css" media="screen">/*<![CDATA[*/@import url(http://webmaker.ooo.cz/_design/style.css);/*]]>*/</style>
<script type="text/javascript" src="http://webmaker.ooo.cz/common.js"></script>
</head>

<body>
<div id="header">
        <span><a href="http://webmaker.ooo.cz/logout.aspx">Logout</strong></span>
</div>
    <div id="main">

        <div id="content">
            <div id="tabmenu">

            </div><!-- /tabmenu -->
            <dif id="tabcontent">
              <form name="_ctl2" method="post" action="detail.aspx?article=14599" id="_ctl2">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"     value="/wEPDwULLTE2MTEzz0iZG9.....reallllly..looong...strin......6qKb5or30J5DCLKTCaFR/xc8TPHb9A=" />

<script type="text/javascript">
  <!--
      var theForm = document.forms['_ctl2'];
      if (!theForm) {
          theForm = document._ctl2;
      }
      function __doPostBack(eventTarget, eventArgument) {
          if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
              theForm.__EVENTTARGET.value = eventTarget;
              theForm.__EVENTARGUMENT.value = eventArgument;
              theForm.submit();
          }
      }
   // -->
</script>

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWEQ...vsyXR4=" />
    <div class="data">
    <fieldset>
<legend>Text článku</legend>

<div><input type="hidden" id="txtText" name="txtText" value="FCK editor window contents here." /><input type="hidden" id="txtText___Config" value="HtmlEncodeOutput=true" /><iframe id="txtText___Frame" src="http://webmaker.ooo.cz/_wysiwyg/editor/fckeditor.html?InstanceName=txtText&amp;Toolbar=WebMaker" width="100%" height="400px" frameborder="no" scrolling="no"></iframe></div>  
<input type="button" onclick="GetWordsCount('txtText___Frame')" value="Zobrazit počet slov v článku" />
    </fieldset>

    <!-- There are some more fieldsets here and a submit button. -->

                  </div><!-- .data -->
              </form>
            </div><!-- tabcontent -->
</div><!-- /main -->
</body>
</html>
  • 0
    HTML-код, который вы вводите, имеет неправильный формат: <h1> ... </ h2> Попробуйте с <h1> ... </ h1>. Надеюсь, это поможет!
  • 0
    Вы должны будете опубликовать здесь свой html, может быть любое количество вещей, включая ваш javascript.
Показать ещё 1 комментарий
Теги:
securityexception
fckeditor

3 ответа

1
Лучший ответ

Метод FCKeditor SetHTML полагается на вызов document.write для замены содержимого в элементе управления редактированием. К сожалению, document.write не работает из веб-консоли в Firefox.

Это известная ошибка: Использование document.write внутри окна Scratchpad вызывает "Ошибка безопасности undefined" в веб-консоли

Я знаю, что ошибка говорит, что Scratchpad и сообщение об ошибке разные, но это та же проблема. Примечание этот комментарий от Дэвида Чэна (Исследователь безопасности Mozilla):

Это, как представляется, еще одна ошибка при запуске WebConsole/ScratchPad в песочнице.

Причина, по которой вы, вероятно, помните, что смогла это сделать в прошлом, состоит в том, что она работает в FireBug и работает в Chrome. Вероятно, вы использовали одну из этих сред в прошлом при работе с элементом управления FCKeditor.

  • 0
    Спасибо Джеймс, это откровение.
1

Если ваш javascript исходит из " http://webmaker.ooo.cz/...", то возможно, что вы получаете проблему с доменом, повторно просматривая веб-сайт под другим поддоменом, чем извлекается javascript. Я не уверен в исправлении, и я не уверен, что обязательно, что неправильно. Просто возможность. Я предлагаю попробовать поставить javascript, который вы используете на странице, с помощью html, чтобы убедиться, что сам код действительно работает.

  • 0
    Нет, это не так, но в любом случае +1 за то, что нашел время, чтобы прочитать и ответить.
1

Довольно точно, это какая-то проблема с перекрестным доменом, где вы, вероятно, думаете, что работаете в одном домене, но на самом деле нет. Мне нужно будет проверить фактическую страницу, на которой это работает, чтобы действительно помочь вам, но попробуйте загрузить все соответствующие файлы fckeditor, используя относительные пути к файлам (необязательно от корня), а никогда включать фактические домена, который предотвратит массу неприятностей в целом (например, в противном случае может случиться, что вы находитесь на example.com, но загружаете файлы с www.example.com или аналогичные проблемы).

Странно то, что вы также не сможете читать файлы, но вызванная ошибка связана с непривилегированными действиями, которые почти всегда связаны с проблемами в междоменном пространстве (или с некоторыми очень сложными кросс-контекстными проблемами script), но это в основном, только если вы разрабатываете аддоны).

  • 0
    Посмотрите, это то, что происходит со мной, когда в Mozilla (Iceweasel) я открываю Tools/WebDeveloper/WebConsole . Когда я управляю FCKeditor через Selenium (снова Iceweasel) на той же рабочей станции, код в OP запускается без проблем. Скажите мне, какую команду JavaScript нужно ввести в веб-консоли, чтобы объяснить, что я есть, и устранить ошибку безопасности.
  • 0
    Так что это одна из тех сумасшедших проблем контекста сценария: O. Я вообще не являюсь экспертом в них (хотя в прошлом я работал с одним или двумя) ... прежде всего, проверьте, работает ли он в firebug, не удивлюсь, если это так. Если это тогда, то просто используйте Firebug и сообщите об этом в Mozilla ... Если он не работает в Firebug, я предложу более экзотические решения O :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню