我们正在使用注册自己协议的软件.我们可以从浏览器运行应用程序然后通过以下链接
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.
我想在我的网站上使用html5标签进行移动视图,当用户从移动设备点击此链接时,它会在给定的号码上拨打电话.
<p>Book now, call <a href="tel:01234567890">01234 567 890</a></p>
Run Code Online (Sandbox Code Playgroud)
当用户移动设备是非html5时,我该怎么做才能隐藏此链接..我已经通过了modenizer但似乎它不会检测到链接属性. http://www.tutorialspoint.com/html5/html5_modernizr.htm
有什么建议吗?此按钮仅在我的网站在移动设备上打开时出现,对于移动设备,我想在旧手机中打开时隐藏此链接.
有没有办法检测移动设备是否能够拨打语音电话/短信?
在网页中应用tel:和sms:链接时,这很重要.仅仅检测手机是不够的,因为平板电脑无法拨打电话,iTouch无法拨打电话等.
我对使用设备大小,UA字符串检测等的移动检测黑客不感兴趣.我想使用特征检测来确定设备是否能够进行语音呼叫/ SMS文本消息传递.我喜欢通用解决方案,但我主要对iOS/Android感兴趣.
当用户点击链接与自定义协议(如myapp://superlink)
我需要启动应用程序或允许用户下载并运行配置应用程序
我正在寻找跨浏览器的方式来检查自定义协议是否已注册
我试图通过检查用户代理服务器端(对于IE)来确定这一点
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform]"myapp"=""
发送
`....NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3; **myapp**`
Run Code Online (Sandbox Code Playgroud)
作为用户代理
这是好的,干净的方式,易于配置:
只需下载.reg文件并运行它或通过ms windows策略传播
我无法解决Chrome和Firefox的问题
是否有任何客户端解决方案(在js中)?
我的环境:IE8 +,Chrome(最新),Firefox(最新)
我试图检测我的应用程序处理自定义协议是否已安装并使用不同的浏览器工作.我在本网站上查看了其他问题,例如: 如何检测浏览器的协议处理程序?,并查看了这样的资源,使其适用于大多数浏览器中的大多数平台.
在将此标记为重复之前,请听我说...
除了Windows 8+上的Chrome之外,我能够使用我的功能.我无法像在Windows 7上那样在Chrome上使用窗口焦点方法,因为它会弹出要求我在商店中查找应用的消息.
是否有任何方法(没有扩展名)来检测Chrome上的Windows 8+中的自定义协议处理程序?
更新:
使用onBlur来检测它只适用于Windows 7,因为在8+中,如果它没有找到打开你的协议的东西,它会打开"从应用程序商店找到一些东西"对话框,使浏览器失去焦点.
javascript google-chrome protocols custom-protocol windows-8
在Windows操作系统中,我有一个自定义URI方案,使用它
IE,Firefox,Opera,Safari,Google Chrome
推出Juniper路由器VPN SSH客户端(如思科).基本上,如果安装了SSH客户端,它的工作原理如下,从网页上可以启动VPN SSH Client.
<a href="juniper:open"> VPN SSH Client </a>
Run Code Online (Sandbox Code Playgroud)
问题:
有时用户没有从CD/DVD盒安装Juniper路由器SSH客户端应用程序,因此juniper:open什么都不做.
所以在这种情况下,我需要检测天气是否可用URL方案.
因此,我尝试了Javascript方法,但它没有完全正常工作.因为juniper:open实际上不是web链接.
我如何检测它呢?
<script>
// Fails
function test1(){
window.location = 'juniper:open';
setTimeout(function(){
if(confirm('Missing. Download it now?')){
document.location = 'https://www.junper-affiliate.com/setup.zip';
}
}, 25);
//document.location = 'juniper:open';
}
// Fails
function test2(h){
document.location=h;
var time = (new Date()).getTime();
setTimeout(function(){
var now = (new Date()).getTime();
if((now-time)<400) {
if(confirm('Missing. Download it now?')){
document.location = 'https://www.junper-affiliate.com/setup.zip';
} else {
document.location=h;
}
}
}, 300);
}
</script>
Run Code Online (Sandbox Code Playgroud)
然后:
<a onclick="test1()">TEST 1</a> …Run Code Online (Sandbox Code Playgroud) javascript firefox internet-explorer google-chrome url-scheme
在每个repo上,GitHub都有一个标记为"Clone in Desktop"的按钮(例如:https://github.com/github/developer.github.com).如果您安装了GitHub for Mac,则href类似于"github-mac:// openRepo/https://github.com/github/developer.github.com ".这将打开GitHub for Mac并提供克隆回购.如果不这样做,则href为" http://mac.github.io ".这是GitHub for Mac的下载页面.我想在我的网站上做类似的事情:如果已安装,请打开我的应用程序,如果没有则重定向下载.如何才能最好地完成?
答案是关于Github Conduit,但据我所知,Github Conduit仅适用于Mac的Github.
我有同样的问题,仅适用于Windows操作系统.GitHub如何知道GitHub是否安装在计算机上?
正如deepcurious在说他们的答案,我们需要使用下面的代码,如果协议注册的检查:
$("a[href*='github-windows://']").click(function(e) {
var el = $(this);
setTimeout(function() {
window.location = el.data("data-href-alt");
}, 200);
// once you do the custom-uri, it should properly execute the handler, otherwise, the settimeout that you set before will kick in
window.location = el.data("href");
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
我有以下HTML链接:
<a href="github-windows://openRepo/https://github.com/jquery/api.jqueryui.com" data-href-alt="https://www.example.com/app-not-installed">Clone …Run Code Online (Sandbox Code Playgroud) 当使用mailto链接时,如果他没有设置电子邮件客户端,或者没有将他的网络邮件设置为他的默认客户端(例如,macmail中的默认客户端),它对用户没有任何作用..什么是优雅地提供回退的最佳方式,请用户手动给您发送电子邮件?单击链接后,我可以使用JS或css显示消息:
提交成功,如果没有任何反应,请手动给我们发电子邮件.
如果使用带有mailto的表单,我可以在没有或使用服务器端脚本的情况下成功使用重定向页面吗?有没有办法过滤失败的成功,而不是依赖用户对上面的双重成功/失败消息的判断?
编辑:至少在单击mailto链接(或表单)时更改状态的最佳方式是什么.显然JavaScript或CSS是选项,但我不能简单地创建双动作链接或表单提交; mailto并链接到另一个页面(你已经提交/点击了按钮')
我目前正在开展一个需要检测设备是否可以拨打电话的项目.根据它是否可以,我需要切换视图并应用两个不同的功能,一个是使用tel:on html拨打特定号码的按钮,另一个是输入你的号码的按钮,我们我会用fonality给你打电话.
目前,我已经设法安装了诸如wurfl或terawurfl这样的插件/库,没有一个可以100%可靠地检测手机或平板电脑/台式机是否可以拨打电话.
是否有任何服务器端或用户端解决方案,就像我在wurfl/terawurfl中错过的标签,甚至是我可以用来检测"是电话:工作"或类似性质的javascript ajax调用.
除浏览器嗅探外,有没有办法确定浏览器是否支持使用数据URI进行超链接?
这是上下文:
我创建一个链接,要么下载使用一个方便的数据URI或者,通过JavaScript产生,如果浏览器不支持使用数据URI的超链接信息的CSV文件,生成所需内容的HTML表格.
现在我的代码检查window.URL属性的存在,这在IE9及以下版本中不存在.(现在这个工作正常,因为我需要支持的IE用户在兼容模式下运行,模拟IE8.)
if(window.URL){
downloadLink.href = "data:text/csv;charset=utf-8," + encodeURIComponent(data);
downloadLink.setAttribute("download","download.csv");
}else{
downloadLink.href= "#";
downloadLink.innerHTML = "table view";
downloadLink.onclick = function(){
// build and display HTML table
return false;
};
}
Run Code Online (Sandbox Code Playgroud)
然而,有一个与在Internet Explorer中的新版本(10,11,以及边缘),它们支持的window.URL对象但有一些重叠不会允许数据URI的超链接.
如何确保下载CSV的链接永远不会显示给不支持此类功能的浏览器?
html javascript internet-explorer data-uri browser-feature-detection
我正在尝试创建一个Mozilla浏览器插件,其唯一目的是使用javascript检测是否安装了我编写的应用程序.这是受到另一个类似主题的stackoverflow问题和答案的启发.
我想要的只是一个HelloWorld类型的例子,因为我需要编写的内容比这更简单.Mozilla网站上有很多信息,但作为插件菜鸟和C++新手,我遇到了信息过载.我只需要一步一步"这是如何创建你的第一个简单的插件".
我已经按照这个 ATL教程编写了IE等价物.这是我希望找到的那种指导级别.
请注意,这是关于Mozilla插件而不是扩展 - 谷歌搜索这个主题提供了除插件之外的大量扩展信息.