2009-10-19 2 views
4

У меня есть редактор tinymce (textarea) и один div. Всякий раз, когда я ввожу текст в текстовый редактор, он показывает в преддверии div, который является (200px) в реальном времени, который выглядит как просмотр stackoverflow.Обтекание текста внутри фиксированного Div с помощью CSS или javascript?

То, что я хочу достичь, если мы наберем одно слово без пробела и если оно превысит 200 пикселей, я хочу перевести его на следующую строку.

Я попытался найти его и еще не нашел решение. Я пробовал это решение, которое я нашел здесь

.preview_desc 
{ 
    word-wrap: break-word; /* IE>=5.5 */ 
    white-space: pre; /* IE>=6 */ 
    white-space: -moz-pre-wrap; /* For Fx<=2 */ 
    white-space: pre-wrap; /* Fx>3, Opera>8, Safari>3 */ 
} 

В IE7 он не работает. Он добавил левое и правое пространство. Так что мой ДИВ стал настолько широк, как показано на следующем изображении

http://img38.imageshack.us/img38/2650/ie7g.jpg

В IE8, который выглядит правильно, как это.

img35.imageshack.us/img35/3915/ie8a.jpg (Пожалуйста, добавьте HTTP: // и вид)

Opera 10 не полностью работает также.

А потом у меня есть счетчик строк js. Который

var height = document.getElementById('divpreview').clientHeight; 
var lines = Math.round(height/10); 
document.getElementById('lines').innerHTML = lines; 
if(document.getElementById('divpreview').innerHTML == "") 
{ 
    document.getElementById('lines').innerHTML = 0; 
} 

Если мы используем приведенный выше код CSS, он начинает отсчет от линии 2 во всех браузерах, кроме IE8 и 7.

Я только хочу, чтобы работа по всему последней версии браузера, который FF2,3, IE7, IE8, Safari, Chrome, Opera (последняя версия).

Пожалуйста, помогите мне. Благодарю.

+1

gr8, ** SO ** также имеет такую ​​же проблему, сообщите им, как только вы найдете решение. –

+0

как fyi, вы можете разместить изображения прямо в своем вопросе – geowa4

+0

yeap, я не могу разместить изображения, потому что у меня нет еще 10 очков: S – spotlightsnap

ответ

2

Возможно, я ошибаюсь в вашей проблеме, но, похоже, все, что вам нужно, это немного CSS, в частности максимальная ширина (для всех неидиотических браузеров) и ширина с wacky IE-выражением (для IE) ,

Например

max-width:200px; 
_width:expression(document.body.clientWidth > 200? "200px": "auto"); 

Когда вы объединяете, что с CSS у вас уже есть, кажется, что он должен работать.

+0

Hi machineghost, Я только что протестировал. t не работает. IE7 по-прежнему разрывает ширину, как показано на скриншоте выше. Однако я не знаю, почему. IE8 в порядке. Затем опера 10 полностью не завершается. Любая идея помочь мне? Благодарю. – spotlightsnap

+0

Для IE вы можете попробовать: переполнение: hidden ;. Трудно сказать, в чем заключается ваша проблема, но не имея возможности увидеть ее (если вы можете найти примерную страницу, которая показывает проблему в Интернете, что было бы более полезно), но в основном это просто похоже на проблему с макетом CSS , Однако из-за всех факторов, связанных с этими факторами, эти проблемы могут быть очень сложными для отладки, поэтому я также рекомендую удалить столько, сколько вы можете вокруг проблемы, так что у вас будет только страница с элементами проблемы и ничего больше , Это должно сделать проблему намного проще. – machineghost

+0

(что я подразумеваю под «из-за всех задействованных факторов», заключается в том, что на макет отдельного элемента влияет макет его родителя, родительский родительский элемент, родительский родительский родитель, ....плюс компоновка любых элементов-братьев, а также макет любых дочерних элементов. Стиль CSS, определенный для любого из них, может быть ответственным за что-то странное, которое вы видите в макете исходного элемента, поэтому очень сложно выяснить, что именно вызывает то, что вы видите. Однако, если вы можете создать простую страницу только с элементами проблемы, вы можете удалить все эти потенциальные факторы.) – machineghost

1
function GetWrapedText(text, maxlength) {  
    var resultText = [""]; 
    var len = text.length;  
    if (maxlength >= len) { 
     return text; 
    } 
    else { 
     var totalStrCount = parseInt(len/maxlength); 
     if (len % maxlength != 0) { 
      totalStrCount++ 
     } 

     for (var i = 0; i < totalStrCount; i++) { 
      if (i == totalStrCount - 1) { 
       resultText.push(text); 
      } 
      else { 
       var strPiece = text.substring(0, maxlength - 1); 
       resultText.push(strPiece); 
       resultText.push("<br>"); 
       text = text.substring(maxlength - 1, text.length); 
      } 
     } 
    } 
    return resultText.join(""); 
} 
Смежные вопросы