Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > ошибка с execCommand


Автор: Irokez 17.4.2005, 17:01
как всегда в ИЕ работает, в ФФ ошибка - uncaught exception
Код

<html>
<head>
<title>HTML Area</title>
</head>
<style>
.btn
{
    width:25px;
    height:25px;
}
#EditFrame
{
    width:500;
    height:150;
    border:solid 1px #000000;
}
</style>
<body>
<table>
  <tr>
    <td>
      <input type=button class=btn onClick="EditField.execCommand('bold', false, null)" value=b>
      <input type=button class=btn onClick="EditField.execCommand('underline', null, null)" value=u>
      <input type=button class=btn onClick="EditField.execCommand('italic',null,null)" value=i>
      <input type=button class=btn onClick="EditField.body.innerHTML+='<table border=1><tr><td>ff</td></tr></table>'">
    </td>
  </tr>
  <tr>
    <td>
      <iframe id="EditFrame" style="" frameborder="0" contenteditable="true"></iframe>
    </td>
  </tr>
</table>
<script language=javaScript>
if (navigator.userAgent.match(/msie/i)) EditField = frames['EditFrame'].document;
else if (navigator.userAgent.match(/gecko/i)) EditField = document.getElementById('EditFrame').contentDocument;
else alert("Editor is not supported by your browser");
EditField.designMode = 'On';
</script>
</body>
</html>

Автор: Aliance 17.4.2005, 17:39
execCommand IE только поддерживает, кажется...

Автор: Irokez 17.4.2005, 17:40
Цитата(Aliance @ 17.4.2005, 17:39)
execCommand IE только поддерживает, кажется...

неа, и в ФФ тоже

Автор: Aliance 17.4.2005, 18:53
MSDN:
  • http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/constants/underline.asp
  • http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/constants/italic.asp
  • http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/commandids.asp

Цитата
Minimum Availability
Internet Explorer 4.0 and later.

Автор: Sardar 17.4.2005, 23:14
Aliance всё в мозилле есть... ну хотя бы в виде интерфейсов без реализации smile
http://www.xulplanet.com/references/xpcomref/ifaces/nsIDOMNSHTMLDocument.html

Возвращается ошибка NS_ERROR_FAILURE, что значит "х.з. что за проблема но работать не буду" smile
Скорее всего фича попросту еще не имплементированна... могу ошибаться.

Если запросить doShowUI(по моему показать окошки), то получим другую ошибку: NS_ERROR_NOT_IMPLEMENTED - следовательно код пытается показать признаки жизни smile

Автор: Irokez 17.4.2005, 23:30
проблему решил, объект EditFrame надо получать в body - onLoad, тогда все нормально.
в ФФ execCommand() работает нормально

Автор: Aliance 18.4.2005, 00:18
Странно, уже не первая подобная неточность MSDN =/

Автор: Irokez 18.4.2005, 00:37
а как получить выделение для iframe?
у него в отличие от textarea нету selectionStart, есть метод - getSelection, но он только выдает текст выделения.

Автор: Sardar 18.4.2005, 16:50
Цитата(Irokez @ 17.4.2005, 23:37)
метод - getSelection, но он только выдает текст выделения.

Не совсем, возвращается обьект http://www.xulplanet.com/references/xpcomref/ifaces/nsISelection.html, которому передаём конкретный Range для селекции.
Код
var fwin=document.getElementById("test").contentWindow; //достали фреймовое окно
var m=fwin.document.createRange();
m.selectNode(fwin.document.body);  //закинем туда весь документ
var s=fwin.getSelection().addRange(m);  //отселектируем

Фрейм с id="test".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)