您的位置:首页 > Web前端 > JavaScript

解决break-word在Firefox无效的问题。

2008-09-20 17:41 197 查看
// JScript 文件

//浏览器英文换行,兼容firefox浏览器
//如果是IE浏览器,则调用IE私有的css样式 break-all;
//其它浏览器,使用js脚本控制换行。
//参数 dEl 要换行的元素的id

//调用示例:
//        var dEl = document.getElementById ("threePage");
//        var sName = "break-word";
//        var oReg =  new RegExp('(//s|^)' + sName + '(//s|$)');

//        if(dEl.className.match(oReg)){
//           breakWord(dEl);
//        }
//在要调用元素的后面调用本方法。

//aka makeDesignerHappy(dEl);
  function breakWord(dEl){
  
    if(!dEl || dEl.nodeType != 1){
     
      return false;
   
    } else if(dEl.currentStyle && typeof dEl.currentStyle.wordBreak == 'string'){
     
      //Lazy Function Definition Pattern, Peter's Blog
      //From http://peter.michaux.ca/article/3556
     
      breakWord = function(dEl){
        //For Internet Explorer,IE浏览器
       
        dEl.runtimeStyle.wordBreak = 'break-all';
      
        return true;
      }
     
      return breakWord(dEl);
    
    }else if(document.createTreeWalker){
  
      //Faster Trim in Javascript, Flagrant Badassery
      //http://blog.stevenlevithan.com/archives/faster-trim-javascript
     
      var trim = function  (str) {
        str = str.replace(/^/s/s*/, '');
        var ws = //s/,
        i = str.length;
        while (ws.test(str.charAt(--i)));
        return str.slice(0, i + 1);
      }
     
      //Lazy Function Definition Pattern, Peter's Blog
      //From http://peter.michaux.ca/article/3556
     
      breakWord = function(dEl){
       
        //For Opera, Safari, and Firefox,其它浏览器
        var dWalker = document.createTreeWalker(dEl, NodeFilter.SHOW_TEXT, null, false);
        var node,s,c = String.fromCharCode('8203');
        while (dWalker.nextNode())
        {
          node = dWalker.currentNode;
          //we need to trim String otherwise Firefox will display
          //incorect text-indent with space characters
          s = trim( node.nodeValue ) .split('').join(c);
          node.nodeValue = s;
        }
        return true;
      }
     
      return breakWord(dEl);
     
     
    }else{
      return false;
    }
  }
脚本内容摘自:http://www.hedgerwow.com/360/dhtml/css-word-break.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息