我们正在使用注册自己协议的软件.我们可以从浏览器运行应用程序然后通过以下链接
customprotocol://do_this.
Run Code Online (Sandbox Code Playgroud)
但有没有办法检查用户系统支持的自定义协议?如果不是,我们首先要求用户安装软件.
例如:
if (canHandle ('customprotocol')) {
// run software
}
else {
// ask to install
}
Run Code Online (Sandbox Code Playgroud)
编辑 我知道protocolLong属性,但它只适用于IE.
我有一个旧的html页面,它创建一个脚本文件并使用以下命令执行它:
fsoObject = new ActiveXObject("Scripting.FileSystemObject")
wshObject = new ActiveXObject("WScript.Shell")
Run Code Online (Sandbox Code Playgroud)
我正在尝试修改它并使其也可以从其他浏览器使用.如果你知道答案停止阅读,请回答.如果没有快速回答,这里是我的尝试的描述.我成功地完成了这项工作,但只有当脚本短于2000个字符时才会这样做.我需要帮助超过2000个字符的脚本.
该网页仅供内部使用,因此我很容易在从网络驱动器运行VBScript文件的每台计算机上创建自定义URL协议.
我创建了自定义URL协议,启动VBScript文件,如下所示:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\MyUrlProtocol]
"URL Protocol"=""
@="Url:MyUrlProtocol"
"UseOriginalUrlEncoding"=dword:00000001
[HKEY_CLASSES_ROOT\MyUrlProtocol\DefaultIcon]
@="C:\\Windows\\System32\\WScript.exe"
[HKEY_CLASSES_ROOT\MyUrlProtocol\shell]
[HKEY_CLASSES_ROOT\MyUrlProtocol\shell\open]
[HKEY_CLASSES_ROOT\MyUrlProtocol\shell\open\command]
@="C:\\Windows\\System32\\WScript.exe \"X:\\MyUrlProtocol.vbs\" \"%1\""
Run Code Online (Sandbox Code Playgroud)
在MyUrlProtocol.vbs我有这样的:
MsgBox "The length of the link is " & Len(WScript.Arguments(0)) & " characters"
MsgBox "The content of the link is: " & WScript.Arguments(0)
Run Code Online (Sandbox Code Playgroud)
当我点击时,<a href="MyUrlProtocol:test" id="test">click me</a>我看到两条消息,所以一切正常(在Windows 7中使用Chrome和IE测试)
它也适用于我执行时 document.getElementById("test").click()
我认为这可能是解决方案:我会将脚本文本传递给VBS静态脚本,这将创建动态脚本并运行它,但是使用这个系统我不能传递超过2000个字符.
因此,我尝试将脚本文本拆分为小于2000个字符的块,并模拟链接上的几次单击,但只有第一个工作.
所以我尝试过xmlhttp.open("GET","MyUrlProtocol:test",false);,但Chrome说Cross origin requests are only supported for HTTP …