Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Даешь BBcode на всех браузерах, в том числе на КПК+symbian(смартфон)
 
 автор: Wita1y   (10.01.2007 в 14:46)   письмо автору
 
 

Я в javascript не силен. Чуствую что где-то рядом ответ, надо лишь только условие правильно поставить и все. А может я ошибаюсь. Помогите, если кому не сложно это сделать.

Сначало у меня была такая форма:

<form ... name="form">
<input ...>
<input ...>
<a href="#" onClick="javascript:InsBBCode('', '[b]'); return false;">[b]</a> - Жирный<br />
<a href="#" onClick="javascript:InsBBCode('', '[i]'); return false;">[i]</a> - Наклонный<br />
<a href="#" onClick="javascript:InsBBCode('[u]', '[u]'); return false;">[u][/u]</a> - Подчеркнутый<br />
и т.д.
<textarea ... name="msg" >...</textarea>
<input ...>
</form>


Этот код предложенный Cheops:

<script language='JavaScript' type='text/javascript'>
<!--
   function InsBBCode(text1, text2)
   {
     if ((document.selection))
     {
       document.form.msg.focus();
       document.form.document.selection.createRange().text = text1+document.form.document.selection.createRange().text+text2;
     } else document.form.msg.value += text1+text2;
  }
-->
</script>


Работает отлично на IE+OPERA+(symbian+КПК без выделения) :)))
Кроме Mozilla :(



Потом форма осталось такое же, а сами ссылки на теги поменялись на такие:

<form ... name="form">
<input ...>
<input ...>
<a href="#" onClick="javascript:InsBBCode('b', 'b'); return false;">[/b]</a> - Жирный<br />
<a href="#" onClick="javascript:InsBBCode('i', 'i'); return false;">[i][/i]</a> - Наклонный<br />
<a href="#" onClick="javascript:InsBBCode('u', 'u'); return false;">[u][/u]</a> - Подчеркнутый<br />
и т.д.
<textarea ... name="msg" >...</textarea>
<input ...>
</form>


А вот код другой:

<script language='JavaScript' type='text/javascript'>
isDOM = document.getElementById //DOM1 browser (MSIE 5+, Netscape 6, Opera 5+)
  isOpera = isOpera5=window.opera && isDOM //Opera 5+
  isOpera6 = isOpera && window.print //Opera 6+
  isOpera7 = isOpera && document.readyState //Opera 7+
  isMSIE = document.all && document.all.item && !isOpera //Microsoft Internet Explorer 4+
  isMSIE5 = isDOM && isMSIE //MSIE 5+
  isNetscape4 = document.layers //Netscape 4.*
  isMozilla = isDOM && navigator.appName=="Netscape" //Mozilla или Netscape 6.*
  function InsBBCode (tag) {
    if(isMozilla) {
      var ibTag = "["+tag+"]";
      var ibClsTag = "[/"+tag+"]";
      var obj_ta = document.form.msg;
      var ss = obj_ta.selectionStart;
      var st = obj_ta.scrollTop;
      var es = obj_ta.selectionEnd;
      if (es <= 2) {
        es = obj_ta.textLength;
      }
      var start = (obj_ta.value).substring(0, ss);
      var middle = (obj_ta.value).substring(ss, es);
      var end = (obj_ta.value).substring(es, obj_ta.textLength);
      if (obj_ta.selectionEnd - obj_ta.selectionStart > 0) {
        middle = ibTag + middle + ibClsTag;
      } else {
        middle = ibTag + middle + ibClsTag;
      }
      obj_ta.value = start + middle + end;
    } else {
      obj_ta=document.form.msg;
      obj_ta.focus();
      var sel=document.selection;
      var rng=sel.createRange();
      rng.colapse;
      var podst="["+tag+"]"+rng.text+"[/"+tag+"]";
      rng.text=podst;
    }
  }
</script>


С этой поправкой работают в браузерах IE+Opera+Mozilla на компьютере отлично :)
Кроме КПК+symbian :(

Почему не хочет второй код работать?
Почему первый код работает на КПК+symbian?

Если кто не понял, переспросите что конкретно не понятно.
[b]Заранее буду всем благодарен.[/b]

ИСПРАВЛЕНО

   
 
 автор: Lelik   (10.01.2007 в 14:49)   письмо автору
 
   для: Wita1y   (10.01.2007 в 14:46)
 

а разве на КПК есть поддержка яваскрипта?

   
 
 автор: 12345   (10.01.2007 в 16:21)   письмо автору
 
   для: Lelik   (10.01.2007 в 14:49)
 

1. Зачем Вам NN4? Opera6?
2. Где раздают КПК для тестирования скриптов?
3. Что я с этого буду иметь? :)
4) Всем известно что для всех браузеров с сохранением позиции курсора работает этот код, да и то с мелкими исключениями. -

   
 
 автор: Wita1y   (10.01.2007 в 16:36)   письмо автору
 
   для: 12345   (10.01.2007 в 16:21)
 

>1. Зачем Вам NN4? Opera6?
Раз уж есть, так не выкидывать же! Вдруг пригодится. :)

>2. Где раздают КПК для тестирования скриптов?
Не где, он просто есть у меня. Также есть и у моих знакомых людей которые только сидят с КПК в интернете. :)

>3. Что я с этого буду иметь? :)
Я обращался к тем, кто бы смог сделать за спасибо. Слава богу есть такие люди. Насильно ведь никого не заставляю. Если нет, так я особо не расстроюсь. Мне кажется, что тут не такая уж большая проблема. Тем более js-код почти готов, осталось подправить.

   
 
 автор: 12345   (10.01.2007 в 18:08)   письмо автору
 
   для: Wita1y   (10.01.2007 в 16:36)
 

3. Всё бы ничего, но делать для КПК, который нигде не достанешь (кроме как с соседнего стола коллеги) - не нахожу оснований :).

   
 
 автор: Wita1y   (10.01.2007 в 19:09)   письмо автору
 
   для: 12345   (10.01.2007 в 18:08)
 

Я сделал для symbian, а потом и до КПК доберусь ... :)

   
 
 автор: Wita1y   (10.01.2007 в 19:09)   письмо автору
 
   для: 12345   (10.01.2007 в 18:08)
 

-

   
 
 автор: NIK   (10.01.2007 в 21:40)   письмо автору
 
   для: Wita1y   (10.01.2007 в 19:09)
 

попробуй всё-таки протестировать JS на твоём КПК, у меня есть большие сомнения в том, что он действительно его поддерживает. Так например:


<script>
document.write("ala");
</script>


если выведет текст, значит смысл поковырять есть

кстати, я этот скрипт собирал по кусчкам из примеров и IPB, тоже здесь кому-то выкладывал, и мне тоже сказали, что мол переменные isOpera6 действительно ни к чему, хватит и isMSIE, isMozilla, isOpera :)

   
 
 автор: Wita1y   (12.01.2007 в 06:02)   письмо автору
 
   для: NIK   (10.01.2007 в 21:40)
 

Выводит. Еще окошечко выскакивает! :)


<script>
alert("ala");
</script>


P.S.: А недавно в один чат заходил, так он буквально пропитан javascript.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования