zoukankan      html  css  js  c++  java
  • 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测试的浏览器。


  • 相关阅读:
    Alfred上可提高工作效率的Workflow推荐
    局部性原理——各类优化的基石
    持续学习——程序猿的军备竞赛
    http://regex.alf.nu/ 非标准答案
    13总结
    Ubuntu下python安装mysqldb(驱动)
    北大ACM试题分类+部分解题报告链接
    poj 3253 Fence Repair(优先队列+huffman树)
    Centos/Fedora下安装Twisted,failed with error code 1 in /tmp/pip-build-H1bj8E/twisted/解决方法
    关于command 'gcc' failed with exit status 1 解决方法
  • 原文地址:https://www.cnblogs.com/xiexiaokui/p/523893.html
Copyright © 2011-2022 走看看