董卓 发表于 2023-7-31 15:02

有什么文件扩展名在Win10是默认edge打开,而ie11并不支持的?

本帖最后由 董卓 于 2023-8-1 08:25 编辑

rt
想保证一个文件在没有做过任何特殊设置的win10上
初始就用edge打开,不要以ie11打开

讲讲实际需求吧
提供一个给用户下载离线报表的功能,报表必须复用原有HTML页面形式的报表,因为用户也是使用HTML模板进行报表的编制和微调,转PDF有格式差异用户不认可
这些离线HTML报表文件,是从这些直接用户,进一步邮件发到一些不习惯网上系统的间接用户手中使用
而这些间接用户,根据问题反馈,大比例用户默认都是直接ie11打开,而非edge打开

如何让这些间接用户确保离线HTML报表文件关联edge?

——这点不是不能做,但对直接用户教授间接用户来说,也是个麻烦,类似下面mhtml、xml格式其实就有过良好的解决,因此现在直接用户也期待可以直接系统内解决
之前也遇到过类似的问题,使用mhtml、xml格式让直接用户定制报表,然后尽管内部所含内容格式是mhtml、xml的内容,
但生成报表只要后缀名改成.xls、.doc,就能让间接用户保证用对应的office工具来打开
如果不改mhtml、xml的后缀,那么用户默认的打开都是非office打开的

这种方式不但受到了直接、间接用户的两级认可
而且类似国内大量金山做WPS替换office的时候,作为第三方厂商的金山,都积极适配了这个逻辑(金山一开始是打不开内部xml内容和扩展名.doc不符的xml格式.doc的)
说明这种方式有广泛的实现
——以上是之前有过良好解决,导致现在用户和产品各方都有用类似方式解决默认用edge打开的期望

现在类比问题,就到了edge这边,如何保证让edge而非ie11来默认打开这些离线HTML呢?
ie11对本地文件默认禁止使用js、ie对于报表内的SVG图形支持也各种有问题,去shim这些东西实在是投入产出太不划算了

其实17楼说的大字写“请用edge打开”是一种方式的
当然,要同时在大字下面,给个编码后的注册表或者wsh,然后让用户本地下载执行,来修改指定扩展名用edge打开
只是不知道这种html、注册表、wsh行为,又会不会被某种间接客户的防御软件给干掉……然后又是个麻烦事

adslnet0519 发表于 2023-7-31 15:47

南風森愛恋 发表于 2023-7-31 15:52

pdf,webp

董卓 发表于 2023-7-31 15:54

本帖最后由 董卓 于 2023-7-31 16:13 编辑

adslnet0519 发表于 2023-7-31 15:47
pdf?

—— 来自 Sony XQ-AS72, Android 13上的 S1Next-鹅版 v2.5.2-play
pdf在装有办公软件的系统里,是不会用edge打开的,这个不太行
而且pdf即便用edge打开,也是一种比较特殊的调用方式,不能调用到浏览器部分
我这个需求上还是需要用edge浏览器核心来打开内容的
webp也是
mhtml也是

edge感觉会用扩展名做中处理核心的选择,而不是文件内容

火樹銀華 发表于 2023-7-31 18:31

本帖最后由 火樹銀華 于 2023-7-31 18:32 编辑

貌似会是一个xy问题

我觉得你得先说说为什么会有这种需求……最初始的需求的啥

—— 来自 Xiaomi M2102J2SC, Android 12上的 S1Next-鹅版 v2.5.4

lvseqiji 发表于 2023-7-31 20:10

lawsherman 发表于 2023-7-31 20:46

把ie11卸了不就好了

董卓 发表于 2023-7-31 21:01

火樹銀華 发表于 2023-7-31 18:31
貌似会是一个xy问题

我觉得你得先说说为什么会有这种需求……最初始的需求的啥

在【无法控制客户端环境的情况下、在没有做过任何特殊设定的默认win10系统】下,调用系统自带edge而非ie11,用浏览器引擎打开这种扩展名后缀的文件

すぴぱら 发表于 2023-7-31 21:08

Orianna 发表于 2023-7-31 21:15

win10默认情况下,edge不就是默认浏览器么?

董卓 发表于 2023-7-31 21:22

Orianna 发表于 2023-7-31 21:15
win10默认情况下,edge不就是默认浏览器么?

不是,打开html之类的还是ie11

六尺之下 发表于 2023-7-31 21:52

pdf在装有办公软件的系统里,是不会用edge打开的
无法控制客户端环境的情况下、在没有做过任何特殊设定的默认win10系统
默认win10环境里应该没有pdf办公软件吧?如果你的需求是在一台新安装的win10实现这个需求,那pdf这种就是最直接的选项了。如果不是新装的win10,那么系统可能安装过各种软件,或者更改了各种设置,你根本没法保证某个后缀名的文件“默认就用edge打开”。

你主楼要求的是区分edge和ie11,但是后续跟帖中又打补丁似的限制了其他软件。我觉得5#说得很对,你可能找错解决问题的大方向了。

六尺之下 发表于 2023-7-31 21:52

实在不行你试试chromium的扩展插件吧,ie肯定是打不开的。

董卓 发表于 2023-7-31 22:04

本帖最后由 董卓 于 2023-7-31 22:08 编辑

六尺之下 发表于 2023-7-31 21:52
默认win10环境里应该没有pdf办公软件吧?如果你的需求是在一台新安装的win10实现这个需求,那pdf这种就是 ...

批量装的,有wps会占据pdf扩展名
进一步地,即便用edge打开后缀名为pdf但内部为html的文件,edge也只会在pdf引擎下爆个错,而不是自动判断文件内部的格式

以前用xml改.doc后缀,解决过模板化xml文字格式默认用word打开的问题(xml默认ie打开)
word是能够自动判断.doc内部是xml,然后调用对应的引擎来处理的
类似地,excel也能这样处理.xls内部mhtml的情况(mhtml默认也是浏览器打开)

但看来类似,类比到edge并不行啊

日日夜夜 发表于 2023-7-31 22:53

怎么可能有地球生物的x问题是找到一个这样的文件格式?这肯定还是一个y问题,车轱辘话就别说了
你要打开edge不如直接start msedge

seducer0719 发表于 2023-7-31 23:08

建议写个bat脚本放旁边

Cirn09 发表于 2023-7-31 23:35

建议写JS,不是 edge 就        全屏大字“请用 edge 打开”

—— 来自 Xiaomi M2105K81AC, Android 13上的 S1Next-鹅版 v2.5.4

posthoc 发表于 2023-7-31 23:38

这是找到了一个edge的0day吗?

Orianna 发表于 2023-8-1 00:20

董卓 发表于 2023-7-31 21:22
不是,打开html之类的还是ie11

那肯定不是默认状态的win10了。
转换思路可以把要打开的html和call edge的指令打包个单文件exe。

董卓 发表于 2023-8-1 08:21

日日夜夜 发表于 2023-7-31 22:53
怎么可能有地球生物的x问题是找到一个这样的文件格式?这肯定还是一个y问题,车轱辘话就别说了
你要打开edg ...

主楼给了原始问题
让用户开cmd,去找到莫名其妙的菜单、windows组合键、拖拽文件啥的,那是不可能的教育任务

用户只懂双击

dvd6 发表于 2023-8-1 09:25

本帖最后由 dvd6 于 2023-8-1 09:27 编辑

系统还有ie11的人,你都不能保证他有edge吧。。。可以建个批处理文件来调用edge打开对应的html(不是设置关联,而是直接打开文件,又或者两种操作同时做),但每次都得发两个相匹配的文件又是否可以接受呢

董卓 发表于 2023-8-1 09:55

本帖最后由 董卓 于 2023-8-1 09:56 编辑

dvd6 发表于 2023-8-1 09:25
系统还有ie11的人,你都不能保证他有edge吧。。。可以建个批处理文件来调用edge打开对应的html(不是设置关 ...
这种一般就是html里面、用base64编码之类的搞进去一个自带附件。这样就能在html中集成命令附件了。我主楼也提到了。
或者反过来,在wsh里面用cdata之类的编进去一个html数据,然后当场生成的html再打开,也可以。

但这两种做法的问题,在于很容易被各种客户端装的东西杀、防御禁止

0WHan0 发表于 2023-8-1 09:58

我的win10 html默认打开就是edge啊,我才重装的系统没怎么改过设置

posthoc 发表于 2023-8-1 10:00

可以把目标文件嵌进.bat里面然后在bat里指定edge打开吧。
https://github.com/ITCMD/In2Batch
我没用过就是了

dvd6 发表于 2023-8-1 10:13

董卓 发表于 2023-8-1 09:55
这种一般就是html里面、用base64编码之类的搞进去一个自带附件。这样就能在html中集成命令附件了。我主楼 ...

如果只是调用edge打开文件的操作应该不会被拦截吧

董卓 发表于 2023-8-1 10:20

dvd6 发表于 2023-8-1 10:13
如果只是调用edge打开文件的操作应该不会被拦截吧

浏览器执行本地文件、写本地文件可是安全大忌
基本上是肯定不行的(除非特别设了特殊的区域策略)

这种内部集成、一般是要求用户从页面进行下载到本地,下载后,让用户自己点击执行
但我也不是很明确这个是否确实能够过的了各种安防软件的关

同时,
HTML内嵌脚本
对比
脚本内嵌HTML
要好一点,因为有些会搞的直接用户,还会把这个报表拿来做一些修改再给到间接用户、或者进一步解析数据使用。脚本内嵌HTML,看到的就是大段的各种编码后报表数据了,比有直接的报表数据更不好。

六尺之下 发表于 2023-8-1 10:39

昨天晚上本来想回复“难道你的用户都是只会双击打开的吗?”,没想到还真是。

但我觉得你们这样真的把问题复杂化了,以后说不定还有更麻烦的要处理。还不如集中教育一波,统一用右键 > 打开方式 > edge。

现在哪怕是没碰过鼠标键盘的手机用户,都差不多了解文件可以自己选择应用打开了,在PC上搞生产的人怎么还这么惯着

ywkhaha 发表于 2023-8-1 12:02

直接回复,没有,除非设置默认这个应用打开,就像楼上说的最直接成本最低的办法就是培训下用户使用操作方法,规范为sop

ls2021 发表于 2023-8-1 12:15

为了使用HTA编写一个应用程序,要求能够启动后打开一个Edge浏览器的窗口,并在该窗口中打开自身,同时与HTML兼容,可以按照以下步骤进行操作:

1. 创建HTA文件:新建一个文本文件,并将其扩展名更改为.hta。例如,命名为"myapp.hta"。

2. 编辑HTA文件:使用文本编辑器(例如Notepad)打开"myapp.hta",并将以下代码粘贴到文件中:

<!DOCTYPE html>
<html>
<head>
<title>My HTA Application</title>
<HTA:APPLICATION
    ID="myApp"
    APPLICATIONNAME="My HTA Application"
    BORDER="thin"
    BORDERSTYLE="normal"
    CAPTION="yes"
    CONTEXTMENU="no"
    INNERBORDER="no"
    MAXIMIZEBUTTON="yes"
    MINIMIZEBUTTON="yes"
    SCROLL="no"
    SELECTION="no"
    SHOWINTASKBAR="yes"
    SINGLEINSTANCE="yes"
    SYSMENU="yes"
    ICON="path/to/your/icon.ico"
/>
</head>
<body>
    <button onclick="openEdge()">Open Edge Browser</button>
   
    <script type="text/javascript">
      function openEdge() {
            var shell = new ActiveXObject("WScript.Shell");
            shell.Run("msedge.exe"); // Change to the actual path of Edge executable if needed
      }
      
      // Open this HTA application in Edge browser
      window.onload = function() {
            var shell = new ActiveXObject("WScript.Shell");
            var thisScriptPath = window.location.href;
            shell.Run("msedge.exe \"" + thisScriptPath + "\"");
            window.close(); // Close this HTA window
      };
    </script>
</body>
</html>

3. 自定义HTA应用程序:在上面的代码中,替换"myapp.hta"中的图标路径(ICON="path/to/your/icon.ico")为您希望使用的图标。请确保图标文件是ICO格式。

4. 运行应用程序:保存并关闭HTA文件。然后,双击"myapp.hta"文件,应用程序将启动并在Edge浏览器中打开一个新窗口,同时在原始HTA应用程序窗口中关闭自身。

请注意,使用ActiveX对象可能会受到浏览器安全性的限制。在某些情况下,可能需要更改浏览器的安全设置以允许ActiveX对象运行。此外,脚本可能在不同的浏览器和操作系统中表现不同,因此最好在Windows环境中使用Edge浏览器运行该HTA应用程序。---
以上摘自chatgpt,你可以考虑在html的开头插入一段hta的代码,并且把扩展名改成.hta。这样,电脑会用IE内核运行这段hta代码,并且启动edge打开这个hta文件,edge会忽略掉hta代码,所以可以正常运行
未测试

ls2021 发表于 2023-8-1 12:18

董卓 发表于 2023-8-1 10:20
浏览器执行本地文件、写本地文件可是安全大忌
基本上是肯定不行的(除非特别设了特殊的区域策略)



老版本的IE可没这些限制,在IE内核里,你可以通过一些IE专属的特殊标签,来使用那些上古API

董卓 发表于 2023-8-1 12:29

ls2021 发表于 2023-8-1 12:18
老版本的IE可没这些限制,在IE内核里,你可以通过一些IE专属的特殊标签,来使用那些上古API ...

我开始开发那会儿应该是ie5~6,20年前的时代。就已经有这种限制了。安全区域的区别了
你说的上古,应该没有实际环境了吧

还是聚焦说的win10环境ie11来说吧

董卓 发表于 2023-8-1 12:32

ls2021 发表于 2023-8-1 12:15
为了使用HTA编写一个应用程序,要求能够启动后打开一个Edge浏览器的窗口,并在该窗口中打开自身,同时与HTM ...

hta倒是可以试试
不知道会在批量默认系统上,如何被安全限制
如果只是一个弹窗之类倒是好说,怕的是那种不明显的底边出现个条之类的

ls2021 发表于 2023-8-1 13:26

董卓 发表于 2023-8-1 12:29
我开始开发那会儿应该是ie5~6,20年前的时代。就已经有这种限制了。安全区域的区别了
你说的上古,应该没 ...

Win10/11依旧可以用IE7的API,IE7有些API权限是很高的。因为这种兼容性限制在了本地程序,微软也觉得没什么必要去改动它,你可以试试,不少还能用

duperbigd 发表于 2023-8-1 17:00

写个脚本检查UA,只有检测到edge才能跳出死循环

页: [1]
查看完整版本: 有什么文件扩展名在Win10是默认edge打开,而ie11并不支持的?