Skip navigation.

极湖

无不用其“极”

Posts tagged with "HTML"

用 CSS 实现 footer 的位置固定

,

在网上找到很多解决方案,觉得这个网站介绍的方法最省事: http://ryanfait.com/sticky-footer/

实现方法简单说明如下:

首先,HTML要有以下内容
<body>
    <div class="wrapper">
        <!--
        网页内容
        -->
        <div class="push">
        </div>
    </div>

    <div class="footer">
    </div>
</body>
其次,CSS要这样写
html, body {
    height: 100%;
}

.wrapper {
    min-height: 100%;
    height: auto !important;
    height: 100%; /* 为了兼容IE */
    margin: 0 auto -100px; /* 下部空余为 class="footer" 同样高度的负值 */
}

.footer,
.push {
    height: 100px;
}

注意点:
如果没有「div class="wrapper"」,Opera下「class="footer"」和「div class="wrapper"」将会重叠显示。

WYSIWYG 在线 HTML 编辑器收集

, ,

1. FCKeditor
老品牌,名气很大,功能很多,个头也很大,个人不是很喜欢。

2. TinyMCE
和 FCKeditor 齐名,名为"Tiny",实际上个头并不小,而且有向"Huge"发展的趋势。

3. Xinha
据其主页上的介绍,功能似乎很强大,其插件系统看起来不错。因为没用过,暂不置评。

4. widgEditor
个头很小,下载文件只有32k,我看了一下它的代码,感觉还不错,尽管功能稍欠,熟悉JavaScript的人应该可以自己将其扩充。

5. WMD
简单实用的在线编辑器。可惜不提供源代码下载。在自己的网页里面使用它需要注册。

6. WYMeditor
该编辑器做成 jQuery 的插件,这是其亮点,看了一下他的代码,感觉有些零乱,目录结构也不是很好。因个人很喜欢 jQuery,所以期待它做得更好。

7. Wikiwyg
这是 SocialText 采用的在线编辑器,双击网页的某一部分(div)就能使其进入编辑状态,这一点很方便。目前发现的问题是不支持 Opera。

8. WYSIWYG HTML control
一位英国人写的代码,个头很小,js文件才15k,看了一下其代码,比较清晰易懂,应该容易扩展,值得推荐。

9. crosseditor
一位日本人在 Prototype 库的基础上写的代码,非正式产品,其Sample代码可用来研究学习。

目前找到的就这些,网上还有很多类似的编辑器代码,青菜萝卜,各有所爱,自己挑喜欢的用吧。

这儿有一篇文章,教你怎样做 WYSIWYG HTML 编辑器,如果想自己做编辑器,读一读这篇文章肯定有好处。

JavaScript:HTML文本显示处理

,

在网页中需要显示含有HTML代码的文字,需要做一些文字替换。

服务器端的语言如PHP等,基本都提供这样的函数,比如PHP的函数htmlspecialchars,ASP的函数Sever.HTMLEncode。

本来以为JavaScript也会有现成的函数,找了一下发现没有。JavaScript有escape和unescape函数,不过,这两个函数是用来加密/还原非ASCII字符,而不是HTML的TAG变换。

终于找到两个方法如下:

// 方法一: 普通的文字替换
function encodeHTML1(s) {
    var str = s;
    str = str.replace(/&/g, "&");
    str = str.replace(/</g, "<");
    str = str.replace(/>/g, ">");
    str = str.replace(/"/g, """);
    return str;
}


// 方法二: 利用DOM(或者说是DHTML)实现
function encodeHTML2(s) {
   var div = document.createElement('div');
   div.appendChild(document.createTextNode(s));
   str = div.innerHTML;
   div.outerHTML = "";
   return str;
}


为了测试以上函数,新作了一个HTML文件,文件内容如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>JavaScript Test</title>
<script type="text/javascript">
<!--
//*********************************
// 方法一: 普通的文字替换
//*********************************
function encodeHTML1(s) {
    var str = s;
    str = str.replace(/&/g, "&");
    str = str.replace(/</g, "<");
    str = str.replace(/>/g, ">");
    str = str.replace(/"/g, """);
    return str;
}

//*********************************
// 方法二: 利用DOM(或者说是DHTML)实现
//*********************************
function encodeHTML2(s) {
   var div = document.createElement('div');
   div.appendChild(document.createTextNode(s));
   str = div.innerHTML;
   div.outerHTML = "";
   return str;
}

//*********************************
// 执行测试
//*********************************
var numClick = 0;
function executeTest() {
    var input = document.getElementById('input');
    var output = document.getElementById('output');
    
    switch(numClick) {
        case 0:
            output.innerHTML = '不做处理的输出: <br />' + input.value;
            numClick++;
            break;
        case 1:
            output.innerHTML = 'encodeHTML1的输出: <br />' + encodeHTML1(input.value);
            numClick++;
            break;
        case 2:
            output.innerHTML = 'encodeHTML2的输出: <br />' + encodeHTML2(input.value);
            numClick = 0;
            break;
        default:
            break;
    }
    
}
-->
</script>
</head>
<body>

<h2>JavaScript Test</h2>
<hr />
<b>Input:</b> <br />
<textarea id="input" name="input" rows="10" cols="50"></textarea>
<hr />
<b>Output:</b> <br />
<div id="output"></div>
<hr />
<input type="button" id="execute" name="btn_test" size="50" value="Execute Test" onclick="executeTest();" />

</body>
</html>

两款用 JavaScript 实现的“所见即所得”编辑器

,

1. TinyMCE:
http://tinymce.moxiecode.com/index.php

2. FCKeditor
http://www.fckeditor.net/

不好说谁比谁好,看自己的喜好选用。

这儿有更多的“在线编辑器”介绍:
http://www.cnbruce.com/blog/showlog.asp?log_id=1021

解决无空格超长英文字符串不自动折行问题

, ,

1. 在适当的地方添加 <wbr> 标签。
例:
<div class="name">1111111......111111111111<wbr>222222222......2222222222</div>

* 仅适用于IE和Mozilla
* 其他浏览器可以考虑用 &shy;

2. 用CSS来控制
例:
<div style="word-wrap: break-word; word-break: break-all;">111111111......11111111</div>

* 仅适用于IE

Toolbot.com

, ,

不经意发现的一个小网站:
http://www.toolbot.com/

上面有一些HTTP以及浏览器相关小工具,有些也许以后用得着,所以记录一下。

给Select列表排序的JavaScript函数

, ,

网上找到的代码,稍微整理了一下:
//*********************************
// テキストとして比較する
//*********************************
function compareText (option1, option2) {
return option1.text < option2.text ? -1 :
option1.text > option2.text ? 1 : 0;
}

//*********************************
// 数字として比較する
//*********************************
function compareValue (option1, option2) {
return option1.value < option2.value ? -1 :
option1.value > option2.value ? 1 : 0;
}

//*********************************
// テキスト→Floatとして比較する
//*********************************
function compareTextAsFloat (option1, option2) {
var value1 = parseFloat(option1.text);
var value2 = parseFloat(option2.text);
return value1 < value2 ? -1 :
value1 > value2 ? 1 : 0;
}

//*********************************
// 数字→Floatとして比較する
//*********************************
function compareValueAsFloat (option1, option2) {
var value1 = parseFloat(option1.value);
var value2 = parseFloat(option2.value);
return value1 < value2 ? -1 :
value1 > value2 ? 1 : 0;
}

//*********************************
// 選択リストをソートする
//*********************************
function sortSelectOptions(select, compareFunction)
{
if (!compareFunction) {
compareFunction = compareText;
}

var options = new Array (select.options.length);

for (var i = 0; i < options.length; i++) {
options[i] = new Option (
select.options[i].text,
select.options[i].value,
select.options[i].defaultSelected,
select.options[i].selected
);
}

options.sort(compareFunction);
select.options.length = 0;
for (var i = 0; i < options.length; i++) {
    select.options[i] = options[i];
}
}

让所有Form的按钮都无效的JavaScript代码

, ,

有时候,按了一个按钮,需要让其他按钮失效,所以作了这样一个函数:
//*********************************
// Disable all buttons in all forms
//*********************************
function disableAllFormButtons()
{
  for(var i=0; i < document.forms.length; i++) {
    var objForm = document.forms[i];
    // Run through elements and disable buttons
    for(var j = 0; j < objForm.length; j++) {
      var objElement = objForm.elements[j];
      var strElementType = objElement.type.toLowerCase();
      if(strElementType == "submit" || strElementType == "button") {
        objElement.disabled = true;
      }
    }
  }
}

参考:
http://www.scriptsearch.com/cgi-bin/jump.cgi?ID=1759

用 JavaScript 取不到当前页面的 Header ?

, , ,

想用 JavaScript 取到当前载入页面的 Header ,结果发现很难。

用 Ajax 的方式,可以比较容易地取得返回信息的 Header。XMLHttp 或是 XMLHttpRequest 对象提供了如下的方法:
getAllResponseHeaders()
getResponseHeader("HeaderName")

然而,要取得当前页面的 Header,却没有相应的方法,这是为什么呢?

困惑。

JavaScript的Event附加处理(继承?)

,

例:
<SCRIPT LANGUAGE="JavaScript"> 
<!-- 
<SCRIPT language="javascript">
function doSomething() {
alert('Event附加处理');
}
try{
window.addEventListener('load', doSomething, true);
} catch(ex) {
window.attachEvent('onload', doSomething);
}
</SCRIPT>
//--> 
</SCRIPT>
November 2009
S M T W T F S
October 2009December 2009
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30