Тег href не открывается в новом веб-просмотре или в мобильном сафари
Я работаю с компанией, которая делает приложения для iPhone, и они пытаются отобразить веб-страницу в веб-представлении, которым они управляют. Поэтому все, что я им даю, - это URL-адрес, и они выбирают его с определенными параметрами, чтобы настроить страницу, которую я возвращаю. (Моя страница может отображаться в iFrame или с другой разметкой, о которой я не знаю.) Проблема в том, что на этой веб-странице есть ссылки, которые открываются в веб-обзоре, когда предполагается, что эти ссылки будут открыты в мобильном устройстве. Сафари или в другом веб-просмотре. Я попытался изменить цель тега href на _blank
, _self
, _parent
, а также _top
но безрезультатно.
Если не понятно, я не могу контролировать приложение. Так что я не могу попробовать что-то вроде [UIApplication openURL:[NSURL URLWithString:myLink]]
, У меня есть только контроль над содержимым страницы, которую я возвращаю.
Какие-либо предложения?
1 ответ
Чтобы оставаться в пределах одного и того же веб-просмотра, вы не должны использовать href. использование ontouchstart
событие вместоПример:
<a ontouchstart="javascript:window.location = '../abc.html';">Click here</a>
Некоторое время назад я использовал приведенную ниже функцию javascript, чтобы гарантировать, что мои hrefs были преобразованы в события ontouchstart, только при просмотре на iPad.
function clearLinks()
{
var isiPad = navigator.userAgent.match(/iPad/i) != null;
if(isiPad)
{
var obj = document.getElementById('body').getElementsByTagName('a');
for(var i =0; i<obj.length; i++)
{
var url = obj[i].getAttribute('href');
if(url.indexOf("javascript")==-1)
{
obj[i].setAttribute('ontouchstart', "window.location='" + url + "'");
obj[i].setAttribute('href', 'javascript:function(){return false;}');
}
}
}
}