mos开发系列教程八:页面代码研究-地图控件页面结构
写出我的摸索过程,不直接写结果
从生成的html页面代码,得到地图控件的页面结构
<td id="map" onmouseout="return ExitMap(event)">
<div>
<div id="mapSpace">
<div id="tilePlanes">
</div>
<div id="img1" style="overflow: hidden">
<img class="mapImage" id="mapImage1" style="visibility: hidden">
<img class="mapImage" id="mapImage2" style="visibility: hidden">
</div>
</div>
<div id="overlay" style="display: none; left: 0px; visibility: hidden; position: absolute;
top: 0px">
</div>
</div>
</td>
几个重要的变量:
mapCell = document.getElementById('map');
mapDevW = mapCell.offsetWidth;
mapDevH = safari? document.body.offsetHeight: mapCell.offsetHeight; //height of inner elements not set on safari
一个重要的函数
function ScreenToMapUnits(x, y) {
if(x > mapDevW - 1) x = mapDevW - 1;
else if(x < 0) x = 0;
if(y > mapDevH - 1) y = mapDevH - 1;
else if(y < 0) y = 0;
x = extX1 + (extX2 - extX1) * (x / mapDevW);
y = extY1 - (extY1 - extY2) * (y / mapDevH);
return new Point(x, y);
}
你可能会问,我列出这点代码有什么用?
地图控件是mos的核心部位,明白了它的结构,就相当于心中有了一张地图,可以让你迅速走出迷雾。
至于具体怎么用,就看你了。
一般的,需要研究源代码,并进行修改。
可以看出,有两个mapImage: mapImage1&mapImage2。
这两个img, 用来切换curimg(全局指示变量)。
curimg切换时,用到了safari, safari是什么?在mapFrame脚本里没有查出定义出来。
而mapFrame引用了browserdetect.js , contextmenu.js , wz_jsgraphics , hashtable.js , sarissa.js , digitize.js .
在browserdetect.js的代码:
var agent = navigator.userAgent.toLowerCase();
var msie = agent.indexOf("msie") != -1;
var safari = agent.indexOf("safari") != -1;
var firefox = agent.indexOf("firefox") != -1;
终于搞明白safari是一浏览嚣。
于是找了一下safari的资料,
Safari
一,概述afari是苹果电脑的最新操作系统Mac OS X中新的缺省网页浏览器,用来取代之前的Internet Explorer for Mac。Safari使用了KDE的KHTML作为浏览器的运算核心。
二,开发历程
在1997年以前,麦金塔电脑是预装Netscape Navigator浏览器的,及后微软以开发苹果版的Microsoft Office作为条件,要求苹果改用Internet Explorer for Mac。至2003年6月,苹果推出自家的Safari浏览器,微软也终止开发苹果版的IE浏览器。在Mac OS X 10.3版仍有保留IE,至10.4版苹果仅预装Safari浏览器。
Safari使用苹果自家的WebKit来进行网页排版及执行Java Script,当中WebKit内含WebCore排版引擎及JavaScriptCore引擎,分别从KDE的KHTML及KJS引擎衍生而来。WebCore及JavaScriptCore与KHTML及KJS一样,同是自由软件,并以LGPL方式授权。苹果对KHTML的一些改进会并入Konqueror计划。另外,苹果方面也推出了附加的源始码,以类似BSD执照般的开放源代码方式授权。
2005年6 月,KHTML的开发人员曾批评苹果不去整理产品改动的记录,苹果方面遂把WebCore及JavaScriptCore的开发及错误回报交予 opendarwin.org负责。WebKit本身也是以开放源始码方式发行,但浏览器自身的外观,如使用接口等,则维持专有。
2005年4月29日,Safari 2.0版推出,内置RSS及Atom阅读器,其他新功能计有隐密浏览、收藏及电邮网页、搜寻网址书签等,其速度是1.2.4版本的1.8倍。
2005年4月,Safari的开发人员之一Dave Htatt,就他为Safari进行除错的进展方面提交文件,使之能通过Acid2测试(是针对网页浏览器及设计软件,就支援HTML、CSS 2.0及PNG图像标准的综合测试)。4月27日,Hyatt宣布其内部试验版本的Safari通过了Acid2。至10月31日,Safari 2.0.2版正式推出,成为首个通过Acid2测试的浏览器。