在Javascript中,我需要在加载URL并覆盖默认行为时收到通知。例如,在iOS Safari上执行以下操作...
window.location = 'http://pageDoesNotExist.badFormatting';
...会弹出此警告信息......
我想为这样的错误附加一个监听器,并做一些而不是显示一个丑陋的警告框。
当用户点击按钮时,我需要启动我的应用程序(如果已安装),否则我需要打开App Store才能下载我的应用程序。 accepted solution是:
// Attempt to open app
window.location = 'myApp://';
// If app fails to open, will open app store 0.5 seconds later
window.setTimeout(
function() {
window.location = 'http://itunes.apple.com/myAppId';
},
500
);
这里的问题是,当未安装应用程序时,第一个window.location
会打开丑陋的警告框。然后代码将回退到App Store。当用户从App Store返回到Safari时,丑陋的警报框仍然存在。据我所知,window.onerror
无法在移动Safari上启动。
答案 0 :(得分:3)
您的解决方案是here。
基本上,您可以使用Cookie来确定您的应用程序是否已安装。
答案 1 :(得分:-1)
将object
属性添加width="0"
到标记,使用页面网址作为data
属性的值,然后在网址重定向到404时转到iTunes:
/* Find object element */
var hrefobj = document.querySelector("object");
/* Assign protocol string to data attribute of object element */
hrefobj.data = 'myApp://';
/* If the assignment fails */
if (hrefobj.data !== 'myApp://')
{
/* Redirect the window to the fallback URL */
window.location = 'http://itunes.apple.com/myAppId';
}