iOS 9 中屏幕导航的设备位置路径错误
Posted
技术标签:
【中文标题】iOS 9 中屏幕导航的设备位置路径错误【英文标题】:Device location path error for navigation of screen in iOS 9 【发布时间】:2015-10-07 10:45:13 【问题描述】:在我基于 Cordova 的 ios 应用程序中,当我尝试从主页导航到下一个屏幕时,它仍保留在 iOS 9 的主页中,在 iOS 8.4 及更低版本中导航工作正常。
这是 iOS 8.4 中的路径(工作正常)
file:///var/mobile/Containers/Bundle/Application/EABC-4728-97BF-466B/MyApp.app/www/index-telugu.html#publicinterface
这是 iOS 9.0 中的路径,与假设路径不同
file:///var/mobile/Containers/Bundle/Application/47CF-A77E-97ACED384A/MyApp.app/www/index-telugu.html#main
如果有人遇到类似问题,请建议我解决这个问题的方法
这是我的代码:
$('#publicinterface_main_id').click(function()
if (!checkConnection())
navigator.notification.alert('Please Check Your Internet Connection');
else if (!navigator.geolocation)
navigator.notification.alert('Please switch on location settings on your mobile');
else
window.location.href = "index-telugu.html#"+$(this).attr('reloadIndex');
console.log("Path for navigation: : " + window.location.href );
location.reload();
navigator.geolocation.getCurrentPosition(function (p)
getAddress(p.coords.latitude,p.coords.longitude);
$('#pub_HgeoLocation').val(p.coords.latitude+","+p.coords.longitude);
);
var places = new google.maps.places.Autocomplete(document.getElementById('pub_geoLocation'));
google.maps.event.addListener(places, 'place_changed', function ()
var place = places.getPlace();
var address = place.formatted_address;
var longitude = place.geometry.location.lng();
var latitude = place.geometry.location.lat();
$('#pub_HgeoLocation').val(latitude+","+longitude)
);
);
【问题讨论】:
【参考方案1】:iOS 9.0 UIWebView(由 Cordova/Phonegap 使用)的一个错误/“功能”是 window.location.hash
的设置是异步的 - 有关详细信息,请参阅 this bug report。请注意,iOS 8+ 上的 Safari 使用 WKWebView 而不是 UIWebView,因此这个问题在 iOS 9.0 上的 Safari 浏览器中并不明显
console.log(window.location.hash); // -> "#bar"
window.location.hash = '#foo';
console.log(window.location.hash);
// -> "#bar" // iOS 9.0 UIWevView
// -> "#foo" // iOS 9.0 WKWebView (Safari) and all other known browsers except
// in all other known browsers at this point window.location.hash will read '#foo'. In iOS9 UIWebView it won't.
if(window.location.hash !== '#foo')
// bang: iOS 9 webview
else
// ok: any other browser
作为一种解决方法,您可以尝试使用window.setTimeout
在设置值window.location.hash
异步后进行操作,允许在使用之前应用该值。因此,使用上面的代码,尝试类似:
window.location.href = "index-telugu.html#"+$(this).attr('reloadIndex');
window.setTimeout(function()
console.log("Path for navigation: : " + window.location.href );
location.reload();
,0);
【讨论】:
谢谢...这对我来说真的很神奇..它与您的解决方案配合得很好..以上是关于iOS 9 中屏幕导航的设备位置路径错误的主要内容,如果未能解决你的问题,请参考以下文章