打印

符合标准的对联广告代码

“原本工作正常的对联广告突然宣布罢工,为什么?标准化真的那么脆弱吗?"

老实说我不是很喜欢对联广告,呵呵。可是总有人提出这样的要求,所以这个还是有些意义的,闲话少说,进入正题。

不符合标准的正常工作的对联广告:

 提示:您可以先修改部分代码再运行
这个是可以正常运行的,只要你不使用文档类型声明。


但是,标准设计的网页需要进行文档类型声明以告知浏览器按照怎样的规则去解析网页。当我们使用过渡型标准声明的时候,我们发现这个原本工作正常的对联代码不再起作用。

这是符合标准的代码,和上面的区别是它加了文档类型声明:
复制内容到剪贴板
代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
符合标准的不能正常工作的对联广告

 提示:您可以先修改部分代码再运行
那么,为什么小小的标准声明让对联广告无法工作呢?

问题的根源:
google了几篇文章之后,找到了真凶!哦,抱歉,没有这么夸张了。
让我们回到第一段代码:
注意这一句:diffY=document.body.scrollTop;
当我们采用标准声明之后,你会发现无论你怎样拖动滚动条,diffY的值始终为零。见鬼了吗?不,事实上从html4/loose.dtd开始,只要你采用了相应的文档类型声明,diffY的值就会恒为零(有一种特殊情况,下面谈)。
为什么会这样?
因为采用标准的文档类型声明后,document.body.scrollTop已经无效,而应该用document.documentElement.scrollTop代替。
不仅仅是scrollTop有这种改变,更多请参加表(一)
在表(一)中有这样一行:“Note: scrollLeft and scrollTop also work on DIV's with overflow: auto in Explorer 5+ on Windows and Mozilla 1.1”,这就是我所说的特殊情况。

怎么解决?
将第一段代码做一些修改:
复制内容到剪贴板
代码:
var diffY;
if (document.documentElement && document.documentElement.scrollTop)
    diffY = document.documentElement.scrollTop;
else if (document.body)
    diffY = document.body.scrollTop
else
    {/*Netscape stuff*/}
符合标准的正常工作的对联广告:

 提示:您可以先修改部分代码再运行
以上代码在ie6.0,firefox1.5.0.3,opera7.23下测试通过。
ok,大功告成,干杯!
多说一句,DOCTYPE经常被人忽略,今天看来,实在不应该。

大家可以上我的个人blog和我讨论:残缺 完美 生活——网页设计的试验田

参考网址:
http://forums.digitalpoint.com/showthread.php?t=11965
http://www.quirksmode.org/js/doctypes.html
本帖最近评分记录
这个确实不错,但是能告知具体的调用方式吗?
??不是写得很清楚了吗?以前是怎么调用的现在还怎么调用啊。
请问楼主如果将 AD1 或 AD2 换成一个表格怎么做,如:我把右边的广告变为一个在线客服的工具栏,能够赐教一下吗?

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
我那左右两个div是通过js输出的,你可以直接在html定义写两个div并赋予相应的id即可。当然,js里面的输出语句就不要了。
看这个:

 提示:您可以先修改部分代码再运行

TOP

虽然论坛已经有了很多类似讨论,但是楼主的钻研精神和乐于分享的态度值得鼓励,打上1分不要嫌少,呵呵

TOP

多谢楼主,真的不错,也别怪我菜,请问是不是将代码另存为JS文件,然后在有需要的地方调用? 还是直接写在网页中。如果有空请答复一下。

TOP

都可以。
谢谢斑竹鼓励。

TOP

问一下...如果把上面这种对联广告代码存为一个JS文件..然后在主页中直接调用呀..
             还有就是在什么地方可以改变链接对象的路径呀..如果我想用JPG图片作对联广告   怎么改
           如果想要以FLASH动画做对联广告又怎么做呀..


                       希望有人能回复一下....谢谢~!

TOP

原帖这么好。。。。就没有人能帮我一下吗《》???

    楼主。。。高手们。。。经典的朋友 555555555

TOP

请看5楼。

TOP

555555555555


remain   JS我看不懂呀....

TOP

看不懂请去学习,谢谢

TOP

我想把上面这个对联广告中的ad1  ad2  换成我自己的FLASH动画..怎么换呀..我用的是<img>
         可不成功...
                 能教一下我吗>????

TOP

我想把上面这个对联广告中的ad1 ad2 换成我自己的FLASH动画..怎么换呀..我用的是<img>
可不成功...
能教一下我吗>????

TOP

插动画不能用img标签,建议加强学习.

或在dw里插入flash一次看看代码.

TOP

楼上的兄弟..  可能是我打错了..我的本意不是说插入FLASH  而是用img插入图片..

但我在DW中跟本就不能插入..因为上面的对联广告是在<head></head>中加载的....在DW中跟本看不到...

   望能指教`!!!!!!!!!!!!!!!!!

TOP

好,多谢楼主!

TOP

不错 加上 声明之后
滚动条颜色 也不能使用了

TOP

收藏这个 改天再研究一下 滚动条颜色的问题吧

TOP



 提示:您可以先修改部分代码再运行
代码的效果: http://www.kx3xia.com


上面这段代码也是一个对联广告代码。。。但我不能实现在1024和比1024更大的分辨率下使广告对齐居中于   “网页与窗口左右边缘之间”  

          望能指教

TOP

help

面的对联广告就这样运行是完全可以的,但是为什么我把ad1  ad2  

换成我自己的图片就不行了呢,到底是哪出了问题啊?能否赐教啊?

拜托了!!
         帮我把上面的例子再改一下,换成插图片的行不行啊?

TOP

为什么本人用 Maxthon浏览器,没有效果
我狂,故我在!

TOP

能不能再加个关闭,谢谢

能不能再加个关闭,谢谢

TOP

收藏了!以后会有用到的!谢谢!
想放免费广告请找我!

TOP

怎么把对联显示的变成<iframe>代码显示的效果呢?

TOP

正好这几天正为这个烦恼呢。。楼主算给我解了闷了,谢谢楼主

TOP

麻烦楼主了

TOP

谢谢,正是我需要的,尽管帖子很老了


留个脚印...

TOP