我们正在使用注册自己的协议的软件。我们可以从浏览器运行应用程序,然后通过如下链接:
customprotocol://do_this.
但是有没有办法检查用户系统是否支持这种自定义协议?如果不是,我们想请用户先安装软件。
例如:
if (canHandle ('customprotocol')) {
// run software
}
else {
// ask to install
}
编辑 我知道关于protocolLong属性,但是它仅在IE中有效。
不幸的是,没有简单的方法来实现这一目标。当然,没有预先确定是否安装协议处理程序的方法。
*正如您所提到的, *Internet Explorer
具有该protocolLong
属性,但是我很难让它为所有自定义协议处理程序返回除“未知协议”之外的任何内容-
如果有人知道如何让IE返回正确的值,请告诉我因此我可以更新此部分。我用IE找到的最好的解决方案是将附加到用户代理字符串或安装浏览器扩展以及与您的应用一起公开Java可访问属性的应用程序。
*到目前为止, *Firefox
是主要浏览器中最简单的浏览器,因为它使您可以尝试捕获失败的导航尝试。返回的错误对象包含一个name
属性,其值为NS_ERROR_UNKNOWN_PROTOCOL
:
try {
iframe.contentWindow.location.href = "randomprotocolstring://test/";
} catch(e) {
if (e.name == "NS_ERROR_UNKNOWN_PROTOCOL")
window.location = "/download/";
}
Firefox将弹出并带有其自己的警报框:
Firefox不知道如何打开该地址,因为该协议(随机协议字符串)未与任何程序关联。
关闭此框后,该catch
块将执行,并且您将拥有一个有效的备用。
其次是 Opera
,它使您可以利用可预测性定律来检测单击的自定义协议链接是否成功。如果单击自定义协议,则该页面将保持不变。如果没有安装处理程序,Opera将导航到错误页面。这使得使用iframe进行检测非常容易:
iframe.contentWindow.location = "randomprotocolstring://test/";
window.setTimeout(function () {
try {
alert(ifr.contentWindow.location);
} catch (e) { window.location = "/download/"; }
}, 0);
这setTimeout
是为了确保我们在导航后检查位置。重要的是要注意,如果您尝试访问该页面,Opera会引发ReferenceException(跨域安全性错误)。没关系,因为我们所需要知道的是位置从更改为about:blank
,因此try...catch
工作正常。
Chrome 在这方面很烂。如果自定义协议处理程序失败,则绝对压缩。如果处理程序有效…您猜对了…它确实可以压缩。恐怕无法区分两者。
我尚未测试过 Safari, 但我担心它会与Chrome相同。
我有一个活动,将一个外部url加载到我应用程序内的webview中。我想使用Chrome自定义标签,当它可用,但我支持的设备可能没有一个版本的Chrome支持他们。 它说,如果绑定成功,自定义选项卡可以安全使用。有没有一个简单的方法绑定来测试这个? 我假设是这样的:
问题内容: 我需要检查服务器是否支持SSL和来自Web服务器的密码。 我查看了Java中的SSLSocket,但无法正常工作。 我使用的方法始终为每个网址提供相同的协议。此外,我没有从服务器获得密码。我猜是正确的方法 如何检查服务器使用SSL?服务器返回了什么密码? 问题答案: 分别返回 您一方 可以支持的协议和密码列表。返回您启用的这些列表的子集。 这不会告诉您有关服务器支持什么的太多信息。 根
问题内容: 我的应用使用,但是较旧的设备(特别是支持iOS 8的iPad 2和3)不支持模糊处理。 我想检查用户设备是否支持模糊。我该怎么做? 问题答案: 有一种看似有希望的内部方法,但是您的应用程序当然会被Apple拒绝。让我们创建自己的方法: 首先,我们需要知道我们正在使用的确切设备类型: 例如,这将返回iPad 2。这是iDevice型号的更新列表:https : //theiphonewi
问题内容: 有没有办法检查当前是否在电话上注册了URL方案…使用javascript? 问题答案: 不是无缝的。但是,有一种类似于检查弹出窗口是否被阻止的方法。 当您尝试不支持的URL方案时,Safari会警告用户它不知道该怎么做,并停留在同一页面上。 因此,如果您给应用程序调用分配了一些激活时间(例如300毫秒),然后执行其他操作以响应该方案的不存在。 它不是最漂亮,但可以工作:
例如,将导致更有用附加调试信息。
本文向大家介绍如何检查JavaScript中是否定义了变量?,包括了如何检查JavaScript中是否定义了变量?的使用技巧和注意事项,需要的朋友参考一下 要检查变量是否为“未定义”,您需要使用以下命令进行检查。如果结果为“ false”,则表示未定义变量。在这里,变量结果为“ True”,即定义为- 示例