V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fayefang
V2EX  ›  问与答

chrome 等浏览器底层怎么实现的支持 windows 操作系统的不同版本的?

  •  
  •   fayefang · 2018-09-10 19:20:17 +08:00 · 1786 次点击
    这是一个创建于 2266 天前的主题,其中的信息可能已经有所发展或是发生改变。

    chrome 等浏览器有些版本支持 win7,win8,等,不支持 winXP,但有一些又支持 xp,底层发生了什么?以及所有的桌面应用也同样的有自己支持的操作系统版本,具体怎么设置的或者怎么实现的?

    12 条回复    2018-09-13 08:28:04 +08:00
    delectate
        1
    delectate  
       2018-09-10 19:37:38 +08:00
    很多软件也都是这样吧……根据操作系统的不同,去拼命测试兼容性,仅此而已……
    fayefang
        2
    fayefang  
    OP
       2018-09-10 20:26:01 +08:00 via iPhone
    @delectate 是的,那具体怎么实现的,又比如怎么让本来不支持 XP 的应用支持 XP
    nfroot
        3
    nfroot  
       2018-09-10 21:35:40 +08:00 via Android
    因为系统升级后,会赠送更好的 API,或者变更了相关 API 的功能,但是旧系统没有,你想兼容就得自己去写去设计,还要兼容各系统不要冲突。

    除了系统提供的兼容模式,你不是原作者基本没办法了。
    fayefang
        4
    fayefang  
    OP
       2018-09-10 22:48:56 +08:00 via iPhone
    @nfroot 我是这块的小白,所以能说详细点嘛,就是怎么实现的兼容不同的操作系统的😯😯
    msg7086
        5
    msg7086  
       2018-09-11 07:45:01 +08:00   ❤️ 1
    比如说 XP 下有一个系统调用叫 A(),后来到 Win7 了,大家觉得,诶应该给这个系统调用加点功能,于是就新给了个系统调用,叫 A_牛逼()。后来到 Win10 了,大家觉得还要再给他加点功能,于是就有了 A_特别牛逼()。
    那程序员如果要用到这特别牛逼版本的函数,那自然只能运行在 Win10 上了,因为 Win7 XP 下都没有这函数啊。
    同理如果要兼容多个操作系统版本,那就只能用最基础的 A(),或者是自己写逻辑,判断如果有牛逼的就用牛逼,如果没有牛逼的就用普通版。甚至有些函数是新操作系统才加入的,那就只能判断系统版本然后禁用类似的功能了。
    nfroot
        6
    nfroot  
       2018-09-11 08:49:02 +08:00
    @fayefang 小白就别折腾了,这个不是你能折腾的,简单和你说吧,Chrome 是开源的,你可以拿着源码自己去做兼容,如果你做不到,那只能说明你不适合做这个操作。

    最简单的兼容方法就是用虚拟机,现在虚拟机有窗口模式,就是虚拟机里的窗口和实体机的窗口无缝切换。

    好了我只能回答到这里了。
    nfroot
        7
    nfroot  
       2018-09-11 08:49:57 +08:00
    有源码的还可以考虑自己做兼容,但工程量浩大,没源码的基本别想了。
    fayefang
        8
    fayefang  
    OP
       2018-09-11 08:51:56 +08:00 via iPhone
    @msg7086 了解了,感谢🙏🏻
    fayefang
        9
    fayefang  
    OP
       2018-09-11 10:18:59 +08:00 via iPhone
    @msg7086 有没有相关的资料,我想初步学习下🙏🏻
    fayefang
        10
    fayefang  
    OP
       2018-09-11 10:19:54 +08:00 via iPhone
    @nfroot 有没有相关资料可以学习下,小白就更不能放弃学习了,要像大佬看齐🙏🏻
    msg7086
        11
    msg7086  
       2018-09-11 23:38:42 +08:00
    @fayefang 不清楚,可能要去查各种 Windows API 玩。
    nfroot
        12
    nfroot  
       2018-09-13 08:28:04 +08:00
    @fayefang Chrome 本身是开源的,你去拿了源码,能改你就能做到,否则只能空谈了。你一直在强调自己是小白,但是完全没表达出是什么级别的小白,只感觉到你没戏。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   950 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:55 · PVG 06:55 · LAX 14:55 · JFK 17:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.