IE和Chrome带有多个参数的互相跳转

784 3

IE & Chrome的互相跳转:
简单需求,简单实现。从IE跳转到Chrome,介绍使用ActiveXObject进行操作跳转,并实现多个参数的传递;从Chrome跳转到IE,介绍使用修改注册表的形式进行操作。

IE to Chrome

在IE中打开Chrome方法简单且粗暴,talk is cheap, show me the code

单参or无参

1
2
3
var objShell = new ActiveXObject("WScript.Shell");
// 无参
objShell.Run("cmd.exe /c start chrome www.baidu.com",0,true);

无参

1
2
3
var objShell = new ActiveXObject("WScript.Shell");
// 单参
objShell.Run("cmd.exe /c start chrome www.baidu.com?id=1",0,true);

单参

上述情况都没问题,一切都很顺利,下面来看看多参的情况。

多参传递

1
2
3
// 如果要传 id=1, name=bruce 两个参数
var objShell = new ActiveXObject("WScript.Shell");
objShell.Run("cmd.exe /c start chrome www.baidu.com?id=1&name=bruce",0,true);

多参

什么鬼,我明明传了两个参数啊,怎么只显示了一个,只显示了第一个。What the hell is going on?

原来在cmd的世界里,它有自己的一套转义语法,可参考链接

1
2
3
var objShell = new ActiveXObject("WScript.Shell");
// 经过修正,将&符号进行转义,使用^&代替&
objShell.Run("cmd.exe /c start chrome www.baidu.com?id=1^&name=bruce",0,true);

多参

看完在IE中打开Chrome了,现在来瞅瞅在Chrome中打开IE的方法吧。

Chrome to IE

在Chrome中打开IE,并传多参数,相比IE中打开Chrome要麻烦一些,大致分为以下几个方面。

配置跳转环境

  1. regOpenIE.reg

    1.1 在D盘下新建openIE文件夹,路径为D:\openIE\

    1.2 在openIE路径下新建regOpenIE.reg,并将如下内容复制进该文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\openIE]
@="URL:Alert Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\openIE\DefaultIcon]
@="iexplore.exe,1"

[HKEY_CLASSES_ROOT\openIE\shell]

[HKEY_CLASSES_ROOT\openIE\shell\open]

[HKEY_CLASSES_ROOT\openIE\shell\open\command]
@="cmd /c set m=%1 & \"D:\\alert\\openIE.bat\" %%m%% & exit"

其中文本中的最后一行D:\\alert\\openIE.bat\是当前文件的目录。

  1. 在openIE文件夹下新建openIE.bat,并将如下内容复制进该文件:
1
2
3
4
5
@echo off
set m=%m:openIE:=%
set m="%m:separator=&%"
start "" "C:\\Program Files\\internet explorer\\iexplore.exe" %m%
exit

其中文本中start一行中C:\\Program Files\\internet explorer\\iexplore.exe是你电脑中IE的路径,注意分隔符是双反斜杠。

单参or无参

  1. 在布局中加入以下内容。
1
<a href="openIE:www.baidu.com">Chrome to IE</a>

无参

1
<a href="openIE:www.baidu.com?id=1">Chrome to IE</a>

单参

多参传递

1
2
// 和测试IE跳转Chrome一样,传 id=1, name=bruce 两个参数,看下效果是不是能出来
<a href="openIE:www.baidu.com?id=1&name=bruce">Chrome to IE</a>

多参

同样的思维,是不是&又被转义或者影响到了呢,查阅资料,有博主给出了一个解决方案,使用无转义的字符去替代的方案(就是上面openIE.bat中第三行给出的内容)。

1
<a href="openIE:www.baidu.com?id=1separatorname=bruce">Chrome to IE</a>

多参

使用参数中的separator代替&,完成解析。

写在最后

IE和Chrome的跳转可能还有其他方法,如果朋友找到更加简单的方法,请在下面回复告诉博主,感激不尽。

关注公众号

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器