疯掉了,尽然有js写的操作系统

只有 90 年代的 Web 开发者才记得这些

2016/04/26 · 基础技术 ·
2 评论 ·
WEB

本文由 伯乐在线
dcscodelife
翻译,艾凌风
校稿。未经许可,禁止转载!
英文出处:holman。欢迎加入翻译组

你曾经强行把 <blink> 标签放入
<marquee> 标签吗?如今皮克斯动画工作室获得了所有荣誉,但是在 90
年代这个做法则是电脑动画的伟大创举。通过组合两种标签,你成为了一个先驱者。一个创意无限的人。一个令所有人都崇拜的人。

在 90 年代,你曾经是一个网页开发者。

在当时,你知道自己是一个出色的人物。伴随你而来的是极其大量的技术创新,从那时候开始,我们还没来得及做出喜好,技术就已经开始复制开来了。

让我们先放下 jQuery,抛开非关系型数据库不谈:我们有更重要的事情要讨论。

http://www.masswerk.at/jsuix/

1×1.gif

1×1.gif
应该获得伟大的格莱美大奖。或者普利策新闻奖。或者类似三年级体育课上颁发的最佳进步奖。除了链式链表,它是计算机科学史上最重要的成就。它不是我们应得的未来,而是我们需要的未来(直到盒子模型彻底取代了它)。

如果你还没不熟悉我们的 1×1.gif 小把戏,请看下面:

图片 1

你能看到它吗,让我们放大一些:

图片 2

The 1×1.gif

这个 1×1.gif – 或者 spacer.gif,或者 transparent.gif –
仅仅是一个长宽都是一个像素的透明 GIF 图像。

JavaScript

<IMG SRC=”/1×1.gif” WIDTH=150 HEIGHT=250>

1
<IMG SRC="/1×1.gif" WIDTH=150 HEIGHT=250>

通过上面的代码,你可以把元素放置在页面的任何位置上。

JavaScript

<TABLE> <TR> <TD><IMG SRC=”1×1.gif” WIDTH=300>
<TD><FONT SIZE=42>Hello welcome to my
<MARQUEE>Internet Web Home</MARQUEE></FONT>
</TR> <TR> <TD BGCOLOR=RED><IMG
SRC=”/cgi/webcounter.cgi”> </TR> </TABLE>

1
2
3
4
5
6
7
8
9
<TABLE>
  <TR>
    <TD><IMG SRC="1×1.gif" WIDTH=300>
    <TD><FONT SIZE=42>Hello welcome to my <MARQUEE>Internet Web Home</MARQUEE></FONT>
  </TR>
  <TR>
    <TD BGCOLOR=RED><IMG SRC="/cgi/webcounter.cgi">
  </TR>
</TABLE>

1×1.gif
让你毫不费力地在页面的任何位放置元素。直到今天为止,它仍然是唯一的垂直居中元素的方法。

JavaScript

          

1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

图片对于你而言是不是太高级了?《HTML For Dummies》是不是直到第四章才介绍
<IMG> 标签?现在好了,你是幸运的:&nbsp; 标签来了!

你可以对自己说,“我知道所有 HTML
实体编码。这个弱不禁风的帅哥来这里干嘛的?”

听着,我亲爱的聪明的迷人的读者朋友,这是一个如今的年轻人没有给予足够尊重的创新:不断重复
&nbsp;。很像 1×1.gif 的小把戏,你能任意地扩展 &nbsp;
并用在任何你需要的地方:

JavaScript

PLEASE SIGN <BR>       MY GUESTBOOK
BELOW: <HR><HR>

1
2
3
PLEASE SIGN  <BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MY GUESTBOOK BELOW:
<HR><HR>

在 90 年代,如果我每写下一个 &nbsp;
就得到五美分,我就会有足够的钱支付来自美国在线的每月超支账单了。

// JS/UIX v0.44
// (c) mass:werk (N.Landsteiner) 2003
// all rights reserved

点下划线,边界效应

在 HTML 快走到他的黄金时代的尾巴时,CSS
登场了,它带来了一个内容和样式分离的世界,从此我们也开始不停地处理灾难。

首当其冲地当然是用 CSS
来删除链接的下划线效果。一夜之间,整个因特网都陷入了这个方法所带来的泥泞之中,文本看起来像链接,链接看起来像文本。你不知道点哪里,但是黑暗并没有持续多久,因为我们发明了光标效果(你还没有活到你的鼠标有十二个火球尾巴的时候)。

高级技术的应用是如此引人注目,以至于几乎我们所有人都从一开始就使用
CSS。我甚至在 2000 年的一份 index.shtml(对,就是
SSI)文档中发现了证据:

JavaScript

<style type=”text/css”> <!– a:hover {text-decoration: none;
color: #000000} –> </style>

1
2
3
4
5
<style type="text/css">
<!–
a:hover {text-decoration: none; color: #000000}
–>
</style>

就是它了!当然,这是 CSS
的内嵌样式。这个样式使你的鼠标滑过链接时,删除链接的下划线并且链接的文字变黑。从此,交互式网站诞生了。

// term gui

DHTML 动态超文本标记语言

就在我们拥有了删除链接下划线的技术后,我们决定把它和一个强大功能结合起来,这个功能就是在页面加载的时候弹出一个消息框
alert("Welcome to my website!")。组合 CSS 和 JavaScript
的二者力量,我们得到了一个技术怪兽:DHTML。

DHTML,表示“分布式
HTML”,这是网页开发工具的最高成就。它将经受住时间的考验,它可以使我们实现很多效果,比如雪花从页面顶部飘落下来,或者创建可折叠的菜单,动态的图片地图,又或者除了使用语义标签
<div>,我们还可以自定义 <marquee> 标签。

DHTML 帮助 Web 开发从业余爱好发展到一个成熟的专业领域。类似 Dynamic
Drive 这样的网站使你可以仅仅通过复制粘贴一个 50
行的代码块,就可以解决任何问题,而不需要自己再思考创新的解决方法。实际上,
DHTML 就是那个年代的 Twitter Bootstrap 框架。

var conf_term_x=102;
var conf_term_y=34;
var conf_kbd_offset=34;
var termImgPath=’jsuix_support/’;
var termDiv=’termDiv’;
var termBgColor=’#181818′;
var termFrameColor=’#555555′;
var termPageColor=’#222222′;
var conf_repeat_delay1=320;
var conf_repeat_delay2=170;

像素字体

那个年代的电脑屏幕不是很大。我的意思是,虽然自从阴极射线管显示器 CRT
诞生后,显示器的尺寸的确很大,但是它们的分辨率不高。因此,为了充分利用像素,我们必须用
6 个像素点来表示任意字符。

图片 3

从字里行间我们可以看出,当面对着这些简单的不能再简单的字体,并且当意识到这些字体都是由像素构成的时候,Web
开发者们会渴望成为一个漫画家。所以你会在启动画面上看到那些奇怪的等距像素插图,这些开发者的时间和金钱如果投到那些新上市的互联网公司会产生更多的价值,而不是浪费在安装
Photoshop 软件上。

var termKbdDiv=’termKbdDiv’;
var termKbdBgColor=’#222222′;
var keycapspath=’jsuix_support/keycaps/’;

按钮

我相信人们之所以讨厌IE浏览器,都是因为IE浏览器抛弃了当初那种最纯粹的样子

IE 4.0 是浏览器的完美化身。它拥有动态桌面。拥有通道
Channels。对,就是伟大的通道,这是最酷的技术,之前从来没有在市场上被使用过,一点都没有。总的来说,IE
4 太优秀了,无论你是否喜欢它,你都应该把它装到你的电脑上。

当你属于精英团体时,你深刻理解完美的价值,你有一种与生俱来的冲动,你想告诉每一个你遇到的人你的决定。你,也唯独只有你有必要庄严地做一个伟大的决定。比如决定你的客户使用什么浏览器浏览你的网站。

图片 4

这些按钮随处可见。就像军官衣服上的绶带:向人们宣告着他们为了如今的荣耀,曾经是如何努力战斗的故事。换句话说,无论你用哪一个编辑器(当然是
FrontPage 98),无论你的 Web 服务器是什么(傻瓜,当然是
GeoCities),无论是 Web
环的哪个部分(这个按钮无论如何都将提高你的网站排名)

我怀念这段美好的时光。如今我们在
Javascript上进行抽象,在抽象之上又进行抽象。我们甚至都不知道如何准确地进行计算。每当想起我们如何走到今天这一步,都令人十分吃惊。

让我们自豪地举起酒杯,帮我们一个忙:复制一堆 &nbsp;
到你的下一个代码提交中,让你的团队成员大吃一惊吧。

1 赞 收藏 2
评论

var termSubDivs=false;
var termLayers=false;
var termDocNS4=null;
var termStringStart=”;
var termStringEnd=”;

关于作者:dcscodelife

图片 5

简介还没来得及写 :)
个人主页
·
我的文章
·
10
·
 

图片 6

var termKbdDocNS4=null;
var termKbdOn=false;
var keycapsShift=false;
var keycapsCpslk=false;
var keycapsShiftRef=new Array();
var keycapsCpslkRef=new Array();

var termSpecials=new Array();
termSpecials[0]=’ ‘;
termSpecials[1]=’$’;
termSpecials[2]=’ ‘;
termSpecials[3]=’?’;
termSpecials[4]=’#’;
termSpecials[32]=’ ‘;
termSpecials[34]='”‘;
termSpecials[38]=’&’;
termSpecials[60]='<‘;
termSpecials[62]=’>’;
termSpecials[127]=’◊’;

var termStyles=new Array(1,2,4,8);
var termStyleOpen=new Array();
var termStyleClose=new Array();
termStyleOpen[1]='<SPAN CLASS=”termReverse”>’;
termStyleClose[1]='<\/SPAN>’;
termStyleOpen[2]='<U>’;
termStyleClose[2]='<\/U>’;
termStyleOpen[4]='<I>’;
termStyleClose[4]='<\/I>’;
termStyleOpen[8]='<STRIKE>’;
termStyleClose[8]='<\/STRIKE>’;

// buttons UI

var termImgNames=new Array(‘left_lo’, ‘left_hi’, ‘right_lo’, ‘right_hi’, ‘delete_lo’, ‘delete_hi’, ‘esc_lo’, ‘esc_hi’, ‘kbd_show_lo’, ‘kbd_show_hi’, ‘kbd_hide_lo’, ‘kbd_hide_hi’);
var termImages=new Array();

function termImgPreload(path,imgnames) {
    for (var i=0; i<imgnames.length; i++) {
        var n=imgnames[i];
        termImages[n]=new Image();
        termImages[n].src=path+n+’.gif’
    }
}

if (document.images) termImgPreload(termImgPath,termImgNames);

function termSetImg(n,v) {
    if (document.images) {
        var img=(termLayers)? termDocNS4.images[‘term_’+n] : document.images[‘term_’+n];
        var stat=(v)? ‘_hi’ : ‘_lo’;
        img.src=termImages[n+stat].src
    }
}

// UI keyboard
// key maps (200=left shift, 202=right shift, 204=CpsLock)

var termKeyMap= [
    [96,49,50,51,52,53,54,55,56,57,48,45,61,8],
    [27,113,119,101,114,116,121,117,105,111,112,91,93,13],
    [204,97,115,100,102,103,104,106,107,108,59,39,35],
    [200,92,122,120,99,118,98,110,109,44,46,47,30,202],
    [32,28,31,29]
];
var termKeyMapShift=[
    [126,33,34,35,36,37,94,38,42,40,41,95,43,8],
    [27,81,87,69,82,84,89,85,73,79,80,123,125,13],
    [204,65,83,68,70,71,72,74,75,76,58,34,64],
    [200,124,90,88,67,86,66,78,77,60,62,63,30,202],
    [32,28,31,29]
];
var termKeyMapCpslk=[
    [96,49,50,51,52,53,54,55,56,57,48,45,61,8],
    [27,81,87,69,82,84,89,85,73,79,80,91,93,13],
    [204,65,83,68,70,71,72,74,75,76,59,39,35],
    [200,92,90,88,67,86,66,78,77,44,46,47,30,202],
    [32,28,31,29]
];
var termKeyWdth=[
    [35,35,35,35,35,35,35,35,35,35,35,35,35,69],
    [55,35,35,35,35,35,35,35,35,35,35,35,35,0],
    [65,35,35,35,35,35,35,35,35,35,35,35,35],
    [49,35,35,35,35,35,35,35,35,35,35,35,35,54],
    [252,35,35,35]
];

var keycapsImgNames=new Array(200,201,202,203,204,205);

function termKeyCaps(k) {
    if ((k<28) && (k>=32) && (repeatTimer)) clearTimeout(repeatTimer);
    if (k==204) {
        keycapsCpslk=(!keycapsCpslk);
        var cnr=(keycapsCpslk)? 205:204;
        termKbdSetImg(204,cnr)
    }
    else if ((k==200) || (k==202)) {
        keycapsShift=(!keycapsShift);
        var m=(keycapsShift)? 1:0;
        termKbdSetImg(200,200+m);
        termKbdSetImg(202,202+m)
    }
    else {
        var ch=0;
        if (keycapsShift) {
            ch=keycapsShiftRef[k]
            keycapsShift=false;
            termKbdSetImg(200,200);
            termKbdSetImg(202,202)
        }
        else if (keycapsCpslk) ch=keycapsCpslkRef[k]
        else ch=k;
        keyHandler({which:ch,jsuix_remapped:true})
    }
}

function termKbdSetImg(n,v) {
    if (document.images) {
        var img=(termLayers)? termKbdDocNS4.images[‘key’+n] : document.images[‘key’+n];
        img.src=termImages[v].src
    }
}

function termSetKbdButton(v) {
    if (document.images) {
        var img=(termLayers)? termDocNS4.images.term_kbd_show : document.images.term_kbd_show;
        var n=(termKbdOn)? ‘kbd_hide’ : ‘kbd_show’;
        var stat=(v)? ‘_hi’ : ‘_lo’;
        img.src=termImages[n+stat].src
    }
}

function termKbdShow() {
    if (termKbdOn) {
        setDivVisibility(termKbdDiv,0);
        termKbdOn=false;
        termSetKbdButton(0)
    }
    else {
        termImgPreload(keycapspath,keycapsImgNames);
        keycapsShift=false;
        keycapsCpslk=false;
        var s='<TABLE BORDER=”0″ CELLSPACING=”0″ CELLPADDING=”0″>\n’;
        s+='<TR><TD WIDTH=”7″ BGCOLOR=”‘+termPageColor+'”><IMG SRC=”‘+keycapspath+’spacer.gif” WIDTH=”7″ HEIGHT=”2″><\/TD>\n’;
        s+='<TD BGCOLOR=”‘+termPageColor+'”>’+termMakeKbd()+'</TD>\n’;
        s+'<TD WIDTH=”7″ BGCOLOR=”‘+termPageColor+'”><IMG SRC=”‘+keycapspath+’spacer.gif” WIDTH=”7″ HEIGHT=”2″><\/TD><\TR>\n’;
        s+='<TR><TD HEIGHT=”10″ COLSPAN=”3″ BGCOLOR=”‘+termPageColor+'”><IMG SRC=”‘+keycapspath+’spacer.gif” WIDTH=”2″ HEIGHT=”10″><\/TD><\/TR>\n’;
        s+='<\/TABLE>’;
        writeElement(termKbdDiv,s);
        setDivXY(termKbdDiv,conf_term_x,conf_term_y+conf_kbd_offset+conf_rows*conf_rowheigt);
        if (termLayers) termKbdDocNS4=document.layers[termKbdDiv].document;
        termKbdOn=true;
        setDivVisibility(termKbdDiv,1);
        termSetKbdButton(0)
    }
}

function termMakeKbd() {
    var s='<TABLE BORDER=”0″ CELLSPACING=”0″ CELLPADDING=”0″>\n’;
    for (var i=0; i<termKeyMap.length; i++) {
        s+='<TR><TD NOWRAP HEIGHT=”39″ VALIGN=”top” NOWRAP BGCOLOR=”‘+termKbdBgColor+'”>’;
        for (var k=0; k<termKeyMap[i].length; k++) {
            var kc=termKeyMap[i][k];
            keycapsShiftRef[kc]=termKeyMapShift[i][k];
            keycapsCpslkRef[kc]=termKeyMapCpslk[i][k];
            if (kc==13) {
                s+='<A HREF=”javas’+’cript:termKeyCaps(13)” onfocus=”if(this.blur)this.blur()”><IMG SRC=”‘+keycapspath+’13_1.gif” HSPACE=”0″ VSPACE=”0″ ALIGN=”top” BORDER=”0″ WIDTH=”47″ HEIGHT=”39″><\/A>’;
                continue
            };
            if (kc==32) s+='<IMG SRC=”‘+keycapspath+’spacer.gif” WIDTH=”139″ HEIGHT=”35″ HSPACE=”1″ VSPACE=”1″ ALIGN=”top”>’
            else if (kc==28) {
                s+='<IMG SRC=”‘+keycapspath+’spacer.gif” WIDTH=”23″ HEIGHT=”35″ HSPACE=”1″ VSPACE=”1″ ALIGN=”top”>’;
                s+='<A HREF=”javasc’+’ript:cursorKbdLeft()” onfocus=”if(this.blur)this.blur()” onmousedown=”repeatSet(\’left\’,1)” onmouseup=”repeatClear()”><IMG SRC=”‘+keycapspath+kc+’.gif” NAME=”key’+kc+'” HSPACE=”1″ VSPACE=”1″ ALIGN=”top” BORDER=”0″ WIDTH=”‘+termKeyWdth[i][k]+'” HEIGHT=”35″><\/A>’;
                continue
            }
            else if (kc==29) {
                s+='<A HREF=”javasc’+’ript:cursorKbdRight()” onfocus=”if(this.blur)this.blur()” onmousedown=”repeatSet(\’right\’,1)” onmouseup=”repeatClear()”><IMG SRC=”‘+keycapspath+kc+’.gif” NAME=”key’+kc+'” HSPACE=”1″ VSPACE=”1″ ALIGN=”top” BORDER=”0″ WIDTH=”‘+termKeyWdth[i][k]+'” HEIGHT=”35″><\/A>’;
                continue
            }
            else if (kc==8) {
                s+='<A HREF=”javasc’+’ript:termKbdBackspace()” onfocus=”if(this.blur)this.blur()” onmousedown=”repeatSet(\’backspace\’,1)” onmouseup=”repeatClear()”><IMG SRC=”‘+keycapspath+kc+’.gif” NAME=”key’+kc+'” HSPACE=”1″ VSPACE=”1″ ALIGN=”top” BORDER=”0″ WIDTH=”‘+termKeyWdth[i][k]+'” HEIGHT=”35″><\/A>’;
                continue
            }
            s+='<A HREF=”javas’+’cript:termKeyCaps(‘+kc+’)” onfocus=”if(this.blur)this.blur()”><IMG SRC=”‘+keycapspath+kc+’.gif” NAME=”key’+kc+'” HSPACE=”1″ VSPACE=”1″ ALIGN=”top” BORDER=”0″ WIDTH=”‘+termKeyWdth[i][k]+'” HEIGHT=”35″><\/A>’;
            if (kc==35) s+='<A HREF=”javas’+’cript:termKeyCaps(13)” onfocus=”if(this.blur)this.blur()”><IMG SRC=”‘+keycapspath+’13_2.gif” HSPACE=”0″ VSPACE=”0″ ALIGN=”top” BORDER=”0″ WIDTH=”37″ HEIGHT=”36″><\/A>’;
        };
        s+='<\/TD><\/TR>\n’;
    };
    s+='<\/TABLE>’;
    return s
}

// term UI

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图