3

現在、php を使用してすべてのブラウザでこの機能をテストしています。

<style>
#preview_desc{
    text-wrap: suppress;
    word-break: break-all;
    word-wrap: break-word; /* IE>=5.5 */
    white-space: -moz-pre-wrap; /* For Fx<=2 */   
    white-space: pre-wrap; /* Fx>3, Opera>8, Safari>3 */
    white-space: -o-pre-wrap; /* Opera 7 */
    white-space: pre-line;
    width:158px; 
    padding-left:5px; 
    padding-right:5px; 
    line-height:12px; 
    font-family:'Arial', Helvetica, sans-serif; 
    font-size:11px; 
    text-align:justify;
    background:#f30000;
}
</style>

<div id="preview_desc" 
class="adlookmsg_box">
Refeforotherapplicationandcontainasdhlsakfhnaiufalsdufgnaloskdufglkjblfasug
</div>

ただし、折り返しまたはスペースなしの単語を処理しない Opera ブラウザーでのみ。これに役立つものがあればお願いします。Tks

-- 編集済み -- 注: この外観については申し訳ありません。

4

1 に答える 1

3

私はOpera 10.10も使用しています。問題を再現できますが、残念ながら適切な回答はありませんが、ここでハックします。他に方法がない場合は実行してください。次のコードをドキュメントの最後に配置します。

<script>
     x=document.getElementById("preview_desc");
     x.innerHTML=x.innerHTML.replace(/(.)/g,"$1\u200b");
</script>

すべての文字の後に \u200b (Zero Width Space) 文字を配置するため、Opera はそれを処理できます。

更新: 現在 10+ に設定されている長い単語にのみ \u200b を追加します。調整が必要な場合があります。

<script>
    x=document.getElementById("preview_desc");
    x.innerHTML=x.innerHTML.replace(/[\w]{10,}/g,function(x){return x.replace(/(.)/g,"$1\u200b");});
</script>
于 2009-12-14T08:33:46.437 に答える